diff --git a/Implem.CodeDefiner/Dockerfile b/Implem.CodeDefiner/Dockerfile index 2c55e968a..e91809e68 100644 --- a/Implem.CodeDefiner/Dockerfile +++ b/Implem.CodeDefiner/Dockerfile @@ -12,6 +12,7 @@ COPY ["Rds/Implem.IRds/Implem.IRds.csproj", "Rds/Implem.IRds/"] COPY ["Implem.Factory/Implem.Factory.csproj", "Implem.Factory/"] COPY ["Rds/Implem.PostgreSql/Implem.PostgreSql.csproj", "Rds/Implem.PostgreSql/"] COPY ["Rds/Implem.SqlServer/Implem.SqlServer.csproj", "Rds/Implem.SqlServer/"] +COPY ["Rds/Implem.MySql/Implem.MySql.csproj", "Rds/Implem.MySql/"] COPY ["Implem.Pleasanter/Implem.Pleasanter.csproj", "Implem.Pleasanter/"] RUN dotnet restore "Implem.CodeDefiner/Implem.CodeDefiner.csproj" COPY . . diff --git a/Implem.CodeDefiner/Functions/Rds/Configurator.cs b/Implem.CodeDefiner/Functions/Rds/Configurator.cs index ccec193af..8be56640c 100644 --- a/Implem.CodeDefiner/Functions/Rds/Configurator.cs +++ b/Implem.CodeDefiner/Functions/Rds/Configurator.cs @@ -4,6 +4,7 @@ using Implem.IRds; using Implem.Libraries.Classes; using Implem.Libraries.Utilities; +using MySqlConnector; using Npgsql; using System; using System.Collections.Generic; @@ -116,6 +117,10 @@ private static void OutputLicenseInfo() serverName = new NpgsqlConnectionStringBuilder(Parameters.Rds.SaConnectionString).Host; database = new NpgsqlConnectionStringBuilder(Parameters.Rds.SaConnectionString).Database; break; + case "MySQL": + serverName = new MySqlConnectionStringBuilder(Parameters.Rds.SaConnectionString).Server; + database = new MySqlConnectionStringBuilder(Parameters.Rds.SaConnectionString).Database; + break; default: serverName = new SqlConnectionStringBuilder(Parameters.Rds.SaConnectionString).DataSource; database = new SqlConnectionStringBuilder(Parameters.Rds.SaConnectionString).InitialCatalog; diff --git a/Implem.CodeDefiner/Functions/Rds/IndexInfo.cs b/Implem.CodeDefiner/Functions/Rds/IndexInfo.cs index cf5d4d69e..228077903 100644 --- a/Implem.CodeDefiner/Functions/Rds/IndexInfo.cs +++ b/Implem.CodeDefiner/Functions/Rds/IndexInfo.cs @@ -67,5 +67,13 @@ internal string IndexName() .Sha512Cng() .MaxLength(factory.SqlDefinitionSetting.IdentifierPostfixLength); } + + internal string IndexInfoString() + { + return ColumnCollection + .Where(o => o.No > 0) + .Select(o => o.ColumnName + "," + o.OrderType.ToString()) + .Join(","); + } } } diff --git a/Implem.CodeDefiner/Functions/Rds/Parts/ColumnSize.cs b/Implem.CodeDefiner/Functions/Rds/Parts/ColumnSize.cs index 33efa033f..29c0a8c7e 100644 --- a/Implem.CodeDefiner/Functions/Rds/Parts/ColumnSize.cs +++ b/Implem.CodeDefiner/Functions/Rds/Parts/ColumnSize.cs @@ -30,7 +30,7 @@ internal static bool HasChanges( } } - private static bool Char( + internal static bool Char( ColumnDefinition columnDefinition, DataRow rdsColumn, int coefficient) { return rdsColumn["max_length"].ToInt() == -1 && columnDefinition.MaxLength == -1 @@ -40,7 +40,7 @@ private static bool Char( : false; } - private static bool Decimal( + internal static bool Decimal( ColumnDefinition columnDefinition, DataRow rdsColumn) { return rdsColumn["Size"].ToString() != columnDefinition.Size; diff --git a/Implem.CodeDefiner/Functions/Rds/Parts/Columns.cs b/Implem.CodeDefiner/Functions/Rds/Parts/Columns.cs index 70387a1c9..4e64a423a 100644 --- a/Implem.CodeDefiner/Functions/Rds/Parts/Columns.cs +++ b/Implem.CodeDefiner/Functions/Rds/Parts/Columns.cs @@ -1,4 +1,5 @@ -using Implem.DefinitionAccessor; +using Implem.CodeDefiner.Functions.Rds.Parts.MySql; +using Implem.DefinitionAccessor; using Implem.IRds; using Implem.Libraries.DataSources.SqlServer; using Implem.Libraries.Utilities; @@ -15,7 +16,8 @@ internal static EnumerableRowCollection Get(ISqlObjectFactory factory, factory: factory, commandText: Def.Sql.Columns .Replace("#TableName#", sourceTableName) - .Replace("#SchemaName#", factory.SqlDefinitionSetting.SchemaName)) + .Replace("#SchemaName#", factory.SqlDefinitionSetting.SchemaName) + .Replace("#InitialCatalog#", Environments.ServiceName)) .AsEnumerable(); } @@ -40,6 +42,32 @@ private static bool HasChanges( DataRow rdsColumn, ColumnDefinition columnDefinition) { + bool ColumnSizeHasChanges() + { + switch (Parameters.Rds.Dbms) + { + case "SQLServer": + case "PostgreSQL": + if (ColumnSize.HasChanges( + factory: factory, + rdsColumn: rdsColumn, + columnDefinition: columnDefinition)) + { + return true; + } + break; + case "MySQL": + if (MySqlColumnSize.HasChanges( + factory: factory, + rdsColumn: rdsColumn, + columnDefinition: columnDefinition)) + { + return true; + } + break; + } + return false; + } if (!(rdsColumn["ColumnName"].ToString() == columnDefinition.ColumnName)) { return true; @@ -48,7 +76,7 @@ private static bool HasChanges( { return true; } - if (ColumnSize.HasChanges(factory: factory, rdsColumn: rdsColumn, columnDefinition: columnDefinition)) + if (ColumnSizeHasChanges()) { return true; } @@ -72,13 +100,25 @@ internal static void CreateColumn( IEnumerable columnDefinitionCollection) { var sqlCreateColumnCollection = new List(); - columnDefinitionCollection.ForEach(columnDefinition => - sqlCreateColumnCollection.Add(Sql_Create( - factory, - columnDefinition, - noIdentity: - sourceTableName.EndsWith("_history") - || sourceTableName.EndsWith("_deleted")))); + switch (Parameters.Rds.Dbms) + { + case "SQLServer": + case "PostgreSQL": + columnDefinitionCollection.ForEach(columnDefinition => + sqlCreateColumnCollection.Add(Sql_Create( + factory: factory, + columnDefinition: columnDefinition, + noIdentity: + sourceTableName.EndsWith("_history") + || sourceTableName.EndsWith("_deleted")))); + break; + case "MySQL": + columnDefinitionCollection.ForEach(columnDefinition => + sqlCreateColumnCollection.Add(MySqlColumns.Sql_Create( + factory: factory, + columnDefinition: columnDefinition))); + break; + } sqlStatement.CommandText = sqlStatement.CommandText.Replace( "#Columns#", sqlCreateColumnCollection.Join(",")); } diff --git a/Implem.CodeDefiner/Functions/Rds/Parts/Constraints.cs b/Implem.CodeDefiner/Functions/Rds/Parts/Constraints.cs index 82312bce2..424d6739d 100644 --- a/Implem.CodeDefiner/Functions/Rds/Parts/Constraints.cs +++ b/Implem.CodeDefiner/Functions/Rds/Parts/Constraints.cs @@ -1,4 +1,5 @@ -using Implem.DefinitionAccessor; +using Implem.CodeDefiner.Functions.Rds.Parts.MySql; +using Implem.DefinitionAccessor; using Implem.IRds; using Implem.Libraries.DataSources.SqlServer; using Implem.Libraries.Utilities; @@ -35,22 +36,47 @@ internal static bool HasChanges( Get(factory: factory, sourceTableName: sourceTableName) .Where(o => !(sourceTableName.EndsWith("_history") && o["column_name"].ToString() == "Ver")) .OrderBy(o => o["column_name"]) - .Select(o => o["column_name"] + "," + factory.SqlDataType.DefaultDefinition(o["column_default"])) + .Select(o => o["column_name"] + "," + factory.SqlDataType.DefaultDefinition(o)) .JoinReturn(); } internal static void CreateDefault( this SqlStatement sqlStatement, ISqlObjectFactory factory, - string sourceTableName, + string tableNameTemp, + IEnumerable columnDefinitionCollection) + { + switch (Parameters.Rds.Dbms) + { + case "SQLServer": + case "PostgreSQL": + sqlStatement.CommandText = CreateDefaultCommand( + factory: factory, + tableNameTemp: tableNameTemp, + columnDefinitionCollection: columnDefinitionCollection, + command: sqlStatement.CommandText); + break; + case "MySQL": + sqlStatement.CommandText = MySqlConstraints.CreateModifyColumnCommand( + factory: factory, + tableNameTemp: tableNameTemp, + columnDefinitionCollection: columnDefinitionCollection, + command: sqlStatement.CommandText); + break; + } + } + + private static string CreateDefaultCommand( + ISqlObjectFactory factory, + string tableNameTemp, IEnumerable columnDefinitionCollection, - string tableNameTemp = "") + string command) { - sqlStatement.CommandText = sqlStatement.CommandText.Replace( + return command.Replace( "#Defaults#", columnDefinitionCollection .Where(o => !o.Default.IsNullOrEmpty()) - .Where(o => !(sourceTableName.EndsWith("_history") && o.ColumnName == "Ver")) - .Select(o => Sql_Create(factory, Def.Sql.CreateDefault, Strings.CoalesceEmpty(tableNameTemp, sourceTableName), o)) + .Where(o => !(tableNameTemp.EndsWith("_history") && o.ColumnName == "Ver")) + .Select(o => Sql_Create(factory, Def.Sql.CreateDefault, tableNameTemp, o)) .JoinReturn()); } @@ -66,7 +92,7 @@ private static string Sql_Create( .Replace("#DefaultValue#", DefaultDefinition(factory, columnDefinition)); } - private static string DefaultDefinition(ISqlObjectFactory factory, ColumnDefinition columnDefinition) + internal static string DefaultDefinition(ISqlObjectFactory factory, ColumnDefinition columnDefinition) { switch (columnDefinition.TypeName.CsTypeSummary()) { @@ -94,7 +120,32 @@ internal static void DropConstraint( string sourceTableName, IEnumerable tableIndexCollection) { - sqlStatement.CommandText = sqlStatement.CommandText + switch (Parameters.Rds.Dbms) + { + case "SQLServer": + case "PostgreSQL": + sqlStatement.CommandText = DropConstraintCommand( + factory: factory, + sourceTableName: sourceTableName, + tableIndexCollection: tableIndexCollection, + command: sqlStatement.CommandText); + break; + case "MySQL": + sqlStatement.CommandText = MySqlConstraints.DropConstraintCommand( + factory: factory, + sourceTableName: sourceTableName, + command: sqlStatement.CommandText); + break; + } + } + + private static string DropConstraintCommand( + ISqlObjectFactory factory, + string sourceTableName, + IEnumerable tableIndexCollection, + string command) + { + return command .Replace("#DropConstraint#", tableIndexCollection .Where(o => Indexes.Get( factory: factory, @@ -106,7 +157,7 @@ internal static void DropConstraint( .Join("\r\n")); } - private static string Sql_Drop(IndexInfo o) + internal static string Sql_Drop(IndexInfo o) { return o.Type == IndexInfo.Types.Pk ? Def.Sql.DropConstraint diff --git a/Implem.CodeDefiner/Functions/Rds/Parts/Indexes.cs b/Implem.CodeDefiner/Functions/Rds/Parts/Indexes.cs index b5f7ca3e7..3a33fec8a 100644 --- a/Implem.CodeDefiner/Functions/Rds/Parts/Indexes.cs +++ b/Implem.CodeDefiner/Functions/Rds/Parts/Indexes.cs @@ -1,4 +1,5 @@ -using Implem.DefinitionAccessor; +using Implem.CodeDefiner.Functions.Rds.Parts.MySql; +using Implem.DefinitionAccessor; using Implem.IRds; using Implem.Libraries.DataSources.SqlServer; using Implem.Libraries.Utilities; @@ -16,28 +17,60 @@ internal static IEnumerable IndexInfoCollection( Sqls.TableTypes tableType) { var tableIndexCollection = new List(); - switch (tableType) + switch (Parameters.Rds.Dbms) { - case Sqls.TableTypes.Normal: - General(factory: factory, - generalTableName: generalTableName, - sourceTableName: sourceTableName, - tableIndexCollection: tableIndexCollection); - Unique(factory: factory, - generalTableName: generalTableName, - tableIndexCollection: tableIndexCollection); - break; - case Sqls.TableTypes.Deleted: - General(factory: factory, - generalTableName: generalTableName, - sourceTableName: sourceTableName, - tableIndexCollection: tableIndexCollection); + case "SQLServer": + case "PostgreSQL": + switch (tableType) + { + case Sqls.TableTypes.Normal: + General(factory: factory, + generalTableName: generalTableName, + sourceTableName: sourceTableName, + tableIndexCollection: tableIndexCollection); + Unique(factory: factory, + generalTableName: generalTableName, + tableIndexCollection: tableIndexCollection); + break; + case Sqls.TableTypes.Deleted: + General(factory: factory, + generalTableName: generalTableName, + sourceTableName: sourceTableName, + tableIndexCollection: tableIndexCollection); + break; + case Sqls.TableTypes.History: + History(factory: factory, + generalTableName: generalTableName, + sourceTableName: sourceTableName, + tableIndexCollection: tableIndexCollection); + break; + } break; - case Sqls.TableTypes.History: - History(factory: factory, - generalTableName: generalTableName, - sourceTableName: sourceTableName, - tableIndexCollection: tableIndexCollection); + case "MySQL": + switch (tableType) + { + case Sqls.TableTypes.Normal: + MySqlIndexes.General(factory: factory, + generalTableName: generalTableName, + sourceTableName: sourceTableName, + tableIndexCollection: tableIndexCollection); + Unique(factory: factory, + generalTableName: generalTableName, + tableIndexCollection: tableIndexCollection); + break; + case Sqls.TableTypes.Deleted: + MySqlIndexes.General(factory: factory, + generalTableName: generalTableName, + sourceTableName: sourceTableName, + tableIndexCollection: tableIndexCollection); + break; + case Sqls.TableTypes.History: + MySqlIndexes.History(factory: factory, + generalTableName: generalTableName, + sourceTableName: sourceTableName, + tableIndexCollection: tableIndexCollection); + break; + } break; } return tableIndexCollection; @@ -182,7 +215,9 @@ public static IEnumerable Get(ISqlObjectFactory factory, string sourceTa { return Def.SqlIoByAdmin(factory: factory).ExecuteTable( factory: factory, - commandText: Def.Sql.Indexes.Replace("#TableName#", sourceTableName)) + commandText: Def.Sql.Indexes + .Replace("#TableName#", sourceTableName) + .Replace("#InitialCatalog#", Environments.ServiceName)) .AsEnumerable() .Select(o => o["Name"].ToString()) .Distinct() @@ -194,6 +229,32 @@ internal static bool HasChanges( string generalTableName, string sourceTableName, Sqls.TableTypes tableType) + { + switch (Parameters.Rds.Dbms) + { + case "SQLServer": + case "PostgreSQL": + return HasChangesPkIx( + factory: factory, + generalTableName: generalTableName, + sourceTableName: sourceTableName, + tableType: tableType); + case "MySQL": + return MySqlIndexes.HasChangesPkIx( + factory: factory, + generalTableName: generalTableName, + sourceTableName: sourceTableName, + tableType: tableType); + default: + return false; + } + } + + private static bool HasChangesPkIx( + ISqlObjectFactory factory, + string generalTableName, + string sourceTableName, + Sqls.TableTypes tableType) { if (Parameters.Rds.DisableIndexChangeDetection) { diff --git a/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlColumnSize.cs b/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlColumnSize.cs new file mode 100644 index 000000000..7445d07c2 --- /dev/null +++ b/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlColumnSize.cs @@ -0,0 +1,71 @@ +using Implem.DefinitionAccessor; +using Implem.IRds; +using Implem.Libraries.Utilities; +using System.Data; + +namespace Implem.CodeDefiner.Functions.Rds.Parts.MySql +{ + internal static class MySqlColumnSize + { + internal static bool HasChanges( + ISqlObjectFactory factory, + DataRow rdsColumn, + ColumnDefinition columnDefinition) + { + bool IsRdsReduced() + { + return rdsColumn["TypeName"].ToString() == "varchar" && + rdsColumn["max_length"].ToInt() == + factory.SqlDefinitionSetting.ReducedVarcharLength * + factory.SqlDefinitionSetting.NationalCharacterStoredSizeCoefficient; + } + bool VarcharMySql() + { + if (columnDefinition.MaxLength == -1) + { + return rdsColumn["TypeName"].ToString() != "longtext"; + } + else if (columnDefinition.MaxLength < 1024) + { + return rdsColumn["TypeName"].ToString() != "varchar" || + ColumnSize.Char( + columnDefinition: columnDefinition, + rdsColumn: rdsColumn, + coefficient: factory.SqlDefinitionSetting.NationalCharacterStoredSizeCoefficient); + } + else if (MySqlColumns.NeedReduceByDefault(columnDefinition: columnDefinition)) + { + return !IsRdsReduced(); + } + else if (Parameters.Rds.DisableIndexChangeDetection) + { + return !IsRdsReduced() && + rdsColumn["TypeName"].ToString() != "text"; + } + else + { + return !(MySqlColumns.NeedReduceByIndex(factory: factory, columnDefinition: columnDefinition) && + IsRdsReduced() || + !MySqlColumns.NeedReduceByIndex(factory: factory, columnDefinition: columnDefinition) && + rdsColumn["TypeName"].ToString() == "text"); + } + } + switch (columnDefinition.TypeName) + { + case "nchar": + return ColumnSize.Char( + columnDefinition: columnDefinition, + rdsColumn: rdsColumn, + coefficient: factory.SqlDefinitionSetting.NationalCharacterStoredSizeCoefficient); + case "nvarchar": + return VarcharMySql(); + case "decimal": + return ColumnSize.Decimal( + columnDefinition: columnDefinition, + rdsColumn: rdsColumn); + default: + return false; + } + } + } +} diff --git a/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlColumns.cs b/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlColumns.cs new file mode 100644 index 000000000..ef0a26d0e --- /dev/null +++ b/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlColumns.cs @@ -0,0 +1,77 @@ +using Implem.DefinitionAccessor; +using Implem.IRds; +using Implem.Libraries.Utilities; +using static Implem.Libraries.DataSources.SqlServer.Sqls; +namespace Implem.CodeDefiner.Functions.Rds.Parts.MySql +{ + internal static class MySqlColumns + { + internal static string Sql_Create( + ISqlObjectFactory factory, + ColumnDefinition columnDefinition) + { + string dataTypeSize; + if (columnDefinition.TypeName == "nvarchar" && + columnDefinition.MaxLength >= 1024) + { + dataTypeSize = NeedReduceByDefault(columnDefinition: columnDefinition) || + NeedReduceByIndex(factory: factory, columnDefinition: columnDefinition) + ? "varchar(" + factory.SqlDefinitionSetting.ReducedVarcharLength.ToString() + ")" + : "text"; + } + else + { + dataTypeSize = columnDefinition.TypeName; + if (columnDefinition.MaxLength == -1) + { + dataTypeSize += "(max)"; + } + else if (columnDefinition.TypeName == "decimal") + { + dataTypeSize += "(" + columnDefinition.Size + ")"; + } + else + { + if (columnDefinition.MaxLength != 0) + { + dataTypeSize += "({0})".Params(columnDefinition.MaxLength); + } + } + } + var commandText = "\"{0}\" {1}".Params(columnDefinition.ColumnName, dataTypeSize); + if (columnDefinition.Nullable) + { + commandText += " null"; + } + else + { + commandText += " not null"; + } + return factory.SqlDataType.Convert(commandText); + } + + internal static bool NeedReduceByDefault( + ColumnDefinition columnDefinition) + { + return !columnDefinition.Default.IsNullOrEmpty(); + } + + internal static bool NeedReduceByIndex( + ISqlObjectFactory factory, + ColumnDefinition columnDefinition) + { + foreach (IndexInfo i in Indexes.IndexInfoCollection( + factory: factory, + generalTableName: columnDefinition.TableName, + sourceTableName: columnDefinition.TableName, + tableType: TableTypes.Normal)) + { + foreach (IndexInfo.Column c in i.ColumnCollection) + { + if (c.ColumnName == columnDefinition.ColumnName) return true; + } + } + return false; + } + } +} diff --git a/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlConstraints.cs b/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlConstraints.cs new file mode 100644 index 000000000..53bc6603b --- /dev/null +++ b/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlConstraints.cs @@ -0,0 +1,77 @@ +using CsvHelper; +using Implem.DefinitionAccessor; +using Implem.IRds; +using Implem.Libraries.Utilities; +using System.Collections.Generic; +using System.Linq; +namespace Implem.CodeDefiner.Functions.Rds.Parts.MySql +{ + internal static class MySqlConstraints + { + internal static string CreateModifyColumnCommand( + ISqlObjectFactory factory, + string tableNameTemp, + IEnumerable columnDefinitionCollection, + string command) + { + bool NeedsDefault(ColumnDefinition o) + { + return !o.Default.IsNullOrEmpty() && + !(tableNameTemp.EndsWith("_history") && o.ColumnName == "Ver"); + } + bool NeedsAutoIncrement(ColumnDefinition o) + { + return o.Identity && + !tableNameTemp.EndsWith("_history") && + !tableNameTemp.EndsWith("_deleted"); + } + string GetModifyColumnSqls( + ISqlObjectFactory factory, + ColumnDefinition columnDefinition, + bool needsDefault, + bool needsAutoIncrement, + int seed) + { + return Def.Sql.ModifyColumn + .Replace("#ColumnDefinition#", MySqlColumns.Sql_Create( + factory: factory, + columnDefinition: columnDefinition)) + .Replace("#Default#", needsDefault + ? " default " + Constraints.DefaultDefinition(factory, columnDefinition) + : string.Empty) + .Replace("#AutoIncrement#", needsAutoIncrement + ? " auto_increment" + : string.Empty) + .Replace("#SetSeed#", needsAutoIncrement + ? $"\r\nalter table \"#TableName#\" auto_increment = {seed};" + : string.Empty); + } + return command.Replace( + "#ModifyColumn#", columnDefinitionCollection + .Where(o => NeedsDefault(o) || NeedsAutoIncrement(o)) + .Select(o => GetModifyColumnSqls( + factory: factory, + columnDefinition: o, + needsDefault: NeedsDefault(o), + needsAutoIncrement: NeedsAutoIncrement(o), + seed: o.Seed == 0 ? 1 : o.Seed)) + .JoinReturn()); + } + + internal static string DropConstraintCommand( + ISqlObjectFactory factory, + string sourceTableName, + string command) + { + return command + .Replace("#DropConstraint#", Indexes.Get( + factory: factory, + sourceTableName: sourceTableName) + .Where(o => o != "PRIMARY") + .Select(o => Def.Sql.DropIndex + .Replace("#IndexName#", o.ToString()) + .Replace("#SourceTableName#", sourceTableName)) + .JoinReturn()); + } + } +} diff --git a/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlIndexes.cs b/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlIndexes.cs new file mode 100644 index 000000000..ad70ac9c6 --- /dev/null +++ b/Implem.CodeDefiner/Functions/Rds/Parts/MySql/MySqlIndexes.cs @@ -0,0 +1,239 @@ +using Implem.DefinitionAccessor; +using Implem.IRds; +using Implem.Libraries.DataSources.SqlServer; +using Implem.Libraries.Utilities; +using System.Collections.Generic; +using System.Data; +using System.Linq; +namespace Implem.CodeDefiner.Functions.Rds.Parts.MySql +{ + internal static class MySqlIndexes + { + internal static void General( + ISqlObjectFactory factory, + string generalTableName, + string sourceTableName, + List tableIndexCollection) + { + var needChangePk = Def.ColumnDefinitionCollection.Any(o => + o.TableName == generalTableName && + o.PkMySql > 0); + if (needChangePk) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Pk, + name: "Pk", + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.PkMySql > 0) + .Select(o => new IndexInfo.Column( + o.ColumnName, o.PkMySql, o.PkOrderBy)) + .ToList())); + } + else if (Def.ColumnDefinitionCollection.Any(o => o.TableName == generalTableName && o.Pk > 0)) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Pk, + name: "Pk", + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.Pk > 0) + .OrderBy(o => o.Pk) + .Select(o => new IndexInfo.Column( + o.ColumnName, o.Pk, o.PkOrderBy)) + .ToList())); + } + if (needChangePk) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Ix, + name: "Ix1", + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.Pk > 0) + .OrderBy(o => o.Pk) + .Select(o => new IndexInfo.Column(o.ColumnName, o.Pk, o.PkOrderBy, o.Unique)) + .ToList())); + } + if (Def.ColumnDefinitionCollection.Any(o => o.TableName == generalTableName && o.Ix1 > 0)) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Ix, + name: "Ix" + (needChangePk ? "2" : "1"), + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.Ix1 > 0) + .OrderBy(o => o.Ix1) + .Select(o => new IndexInfo.Column(o.ColumnName, o.Ix1, o.Ix1OrderBy, o.Unique)) + .ToList())); + } + if (Def.ColumnDefinitionCollection.Any(o => o.TableName == generalTableName && o.Ix2 > 0)) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Ix, + name: "Ix" + (needChangePk ? "3" : "2"), + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.Ix2 > 0) + .OrderBy(o => o.Ix2) + .Select(o => new IndexInfo.Column(o.ColumnName, o.Ix2, o.Ix2OrderBy, o.Unique)) + .ToList())); + } + if (Def.ColumnDefinitionCollection.Any(o => o.TableName == generalTableName && o.Ix3 > 0)) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Ix, + name: "Ix" + (needChangePk ? "4" : "3"), + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.Ix3 > 0) + .OrderBy(o => o.Ix3) + .Select(o => new IndexInfo.Column(o.ColumnName, o.Ix3, o.Ix3OrderBy, o.Unique)) + .ToList())); + } + if (Def.ColumnDefinitionCollection.Any(o => o.TableName == generalTableName && o.Ix4 > 0)) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Ix, + name: "Ix" + (needChangePk ? "5" : "4"), + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.Ix4 > 0) + .OrderBy(o => o.Ix4) + .Select(o => new IndexInfo.Column(o.ColumnName, o.Ix4, o.Ix4OrderBy, o.Unique)) + .ToList())); + } + if (Def.ColumnDefinitionCollection.Any(o => o.TableName == generalTableName && o.Ix5 > 0)) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Ix, + name: "Ix" + (needChangePk ? "6" : "5"), + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.Ix5 > 0) + .OrderBy(o => o.Ix5) + .Select(o => new IndexInfo.Column(o.ColumnName, o.Ix5, o.Ix5OrderBy, o.Unique)) + .ToList())); + } + } + + internal static void History( + ISqlObjectFactory factory, + string generalTableName, + string sourceTableName, + List tableIndexCollection) + { + var needChangePk = Def.ColumnDefinitionCollection.Any(o => + o.TableName == generalTableName && + o.PkMySql > 0); + if (needChangePk) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Pk, + name: "PkHistory", + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.PkHistoryMySql > 0) + .OrderBy(o => o.PkHistoryMySql) + .Select(o => new IndexInfo.Column( + o.ColumnName, o.PkHistoryMySql, o.PkHistoryOrderBy)) + .ToList())); + } + else if (Def.ColumnDefinitionCollection.Any(o => o.TableName == generalTableName && o.Pk > 0)) + { + tableIndexCollection.Add(new IndexInfo( + factory: factory, + tableName: sourceTableName, + type: IndexInfo.Types.Pk, + name: "PkHistory", + columnCollection: Def.ColumnDefinitionCollection + .Where(o => o.TableName == generalTableName) + .Where(o => o.History > 0) + .Where(o => o.PkHistory > 0) + .OrderBy(o => o.PkHistory) + .Select(o => new IndexInfo.Column( + o.ColumnName, o.PkHistory, o.PkHistoryOrderBy)) + .ToList())); + } + } + + private static IEnumerable Get(ISqlObjectFactory factory, string sourceTableName) + { + return Def.SqlIoByAdmin(factory: factory).ExecuteTable( + factory: factory, + commandText: Def.Sql.Indexes + .Replace("#TableName#", sourceTableName) + .Replace("#InitialCatalog#", Environments.ServiceName)) + .AsEnumerable(); + + } + + internal static bool HasChangesPkIx( + ISqlObjectFactory factory, + string generalTableName, + string sourceTableName, + Sqls.TableTypes tableType) + { + bool PkHasChange( + IEnumerable defIndexColumnCollection, + IEnumerable dbIndexColumnCollection) + { + return defIndexColumnCollection + .Where(o => o.IndexName().StartsWith("Pk")) + .FirstOrDefault() + .IndexInfoString() != dbIndexColumnCollection + .Where(o => o["Name"].ToString() == "PRIMARY") + .OrderBy(o => o["No"].ToInt()) + .Select(o => o["ColumnName"] + "," + o["OrderType"].ToString()) + .Join(","); + } + bool IxHasChange( + IEnumerable defIndexColumnCollection, + IEnumerable dbIndexColumnCollection) + { + return defIndexColumnCollection + .Where(o => !o.IndexName().StartsWith("Pk")) + .Select(o => o.IndexName()) + .OrderBy(o => o) + .Join(",") != dbIndexColumnCollection + .Where(o => o["Name"].ToString() != "PRIMARY") + .Where(o => o["Name"].ToString() != "ftx") + .Select(o => o["Name"].ToString()) + .Distinct() + .OrderBy(o => o) + .Join(","); + } + if (Parameters.Rds.DisableIndexChangeDetection) return false; + var defIndexColumnCollection = Indexes.IndexInfoCollection( + factory: factory, + generalTableName: generalTableName, + sourceTableName: sourceTableName, + tableType: tableType); + var dbIndexColumnCollection = Get( + factory: factory, + sourceTableName: sourceTableName); + return PkHasChange(defIndexColumnCollection: defIndexColumnCollection, + dbIndexColumnCollection: dbIndexColumnCollection) || + IxHasChange(defIndexColumnCollection: defIndexColumnCollection, + dbIndexColumnCollection: dbIndexColumnCollection); + } + } +} diff --git a/Implem.CodeDefiner/Functions/Rds/Parts/Tables.cs b/Implem.CodeDefiner/Functions/Rds/Parts/Tables.cs index 083f1d089..84ed9d4bb 100644 --- a/Implem.CodeDefiner/Functions/Rds/Parts/Tables.cs +++ b/Implem.CodeDefiner/Functions/Rds/Parts/Tables.cs @@ -1,4 +1,5 @@ -using Implem.DefinitionAccessor; +using Implem.CodeDefiner.Functions.Rds.Parts.MySql; +using Implem.DefinitionAccessor; using Implem.IRds; using Implem.Libraries.DataSources.SqlServer; using Implem.Libraries.Utilities; @@ -16,7 +17,6 @@ internal static void CreateTable( Sqls.TableTypes tableType, IEnumerable columnDefinitionCollection, IEnumerable tableIndexCollection, - EnumerableRowCollection rdsColumnCollection, string tableNameTemp = "") { Consoles.Write(sourceTableName, Consoles.Types.Info); @@ -53,7 +53,6 @@ internal static void MigrateTable( tableType: tableType, columnDefinitionCollection: columnDefinitionCollection, tableIndexCollection: tableIndexCollection, - rdsColumnCollection: null, tableNameTemp: destinationTableName); if (Def.ExistsTable(generalTableName, o => o.Identity && !sourceTableName.EndsWith("_history") && @@ -154,7 +153,8 @@ internal static bool Exists(ISqlObjectFactory factory, string sourceTableName) factory: factory, commandText: Def.Sql.ExistsTable .Replace("#TableName#", sourceTableName) - .Replace("#SchemaName#", factory.SqlDefinitionSetting.SchemaName)) + .Replace("#SchemaName#", factory.SqlDefinitionSetting.SchemaName) + .Replace("#InitialCatalog#", Environments.ServiceName)) .Rows.Count == 1; } diff --git a/Implem.CodeDefiner/Functions/Rds/TablesConfigurator.cs b/Implem.CodeDefiner/Functions/Rds/TablesConfigurator.cs index 1a313461f..511485028 100644 --- a/Implem.CodeDefiner/Functions/Rds/TablesConfigurator.cs +++ b/Implem.CodeDefiner/Functions/Rds/TablesConfigurator.cs @@ -39,6 +39,9 @@ internal static void Configure(ISqlObjectFactory factory) case "PostgreSQL": ConfigureFullTextIndexPostgreSql(factory: factory); break; + case "MySQL": + ConfigureFullTextIndexMySql(factory: factory); + break; } } catch (System.Exception e) @@ -95,6 +98,28 @@ private static void ConfigureFullTextIndexPostgreSql(ISqlObjectFactory factory) } } + private static void ConfigureFullTextIndexMySql(ISqlObjectFactory factory) + { + bool Exists() + { + return Def.SqlIoByAdmin(factory: factory) + .ExecuteTable( + factory: factory, + commandText: Def.Sql.ExistsFullText + .Replace("#InitialCatalog#", Environments.ServiceName)) + .Rows.Count == 1; + } + if (!Exists()) + { + Def.SqlIoByAdmin(factory: factory) + .ExecuteNonQuery( + factory: factory, + dbTransaction: null, + dbConnection: null, + commandText: Def.Sql.CreateFullText); + } + } + private static void ConfigureTableSet(ISqlObjectFactory factory, string generalTableName) { Consoles.Write(generalTableName, Consoles.Types.Info); @@ -150,10 +175,7 @@ private static void ConfigureTablePart( factory: factory, generalTableName: generalTableName, sourceTableName: sourceTableName, - tableType: tableType), - rdsColumnCollection: Columns.Get( - factory: factory, - sourceTableName: sourceTableName)); + tableType: tableType)); } else { diff --git a/Implem.CodeDefiner/Implem.CodeDefiner.csproj b/Implem.CodeDefiner/Implem.CodeDefiner.csproj index 1499cc45b..f1be8b106 100644 --- a/Implem.CodeDefiner/Implem.CodeDefiner.csproj +++ b/Implem.CodeDefiner/Implem.CodeDefiner.csproj @@ -5,9 +5,9 @@ net8.0 Copyright © Implem Inc 2014 - 2024 This program does the automatic code creation and merging of existing code based on the definition. Also it will make the configuration change of sql server database. - 1.4.8.1 - 1.4.8.1 - 1.4.8.1 + 1.4.9.0 + 1.4.9.0 + 1.4.9.0 Linux diff --git a/Implem.CodeDefiner/Properties/launchSettings.json b/Implem.CodeDefiner/Properties/launchSettings.json index 825310355..5090fc8eb 100644 --- a/Implem.CodeDefiner/Properties/launchSettings.json +++ b/Implem.CodeDefiner/Properties/launchSettings.json @@ -1,17 +1,16 @@ { - "profiles": { - "Implem.CodeDefiner": { - "commandName": "Project", - "commandLineArgs": "def" - }, - "WSL": { - "commandName": "WSL2", - "environmentVariables": {}, - "distributionName": "" - }, - "Docker": { - "commandName": "Docker", - "commandLineArgs": "_rds" - } + "profiles": { + "Implem.CodeDefiner": { + "commandName": "Project", + "commandLineArgs": "def" + }, + "WSL": { + "commandName": "WSL2", + "distributionName": "" + }, + "Docker": { + "commandName": "Docker", + "commandLineArgs": "_rds" } + } } \ No newline at end of file diff --git a/Implem.CodeDefiner/Starter.cs b/Implem.CodeDefiner/Starter.cs index ab4601ef3..2c8da326c 100644 --- a/Implem.CodeDefiner/Starter.cs +++ b/Implem.CodeDefiner/Starter.cs @@ -59,6 +59,9 @@ public static void Main(string[] args) codeDefiner: true, setSaPassword: argHash.ContainsKey("s"), setRandomPassword: argHash.ContainsKey("r")); + Consoles.Write( + text: $"Implem.CodeDefiner {Environments.AssemblyVersion}", + type: Consoles.Types.Info); Parameters.Rds.SqlCommandTimeOut = 0; factory = RdsFactory.Create(Parameters.Rds.Dbms); switch (action) diff --git a/Implem.DefinitionAccessor/Def.cs b/Implem.DefinitionAccessor/Def.cs index 89e0523d9..828ccc962 100644 --- a/Implem.DefinitionAccessor/Def.cs +++ b/Implem.DefinitionAccessor/Def.cs @@ -1695,12 +1695,6 @@ public static void SetColumnDefinition() case "Depts_Disabled": Column.Depts_Disabled = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Depts_Disabled, definitionRow, ColumnXls); break; case "Depts_TenantId": Column.Depts_TenantId = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Depts_TenantId, definitionRow, ColumnXls); break; case "Depts_Title": Column.Depts_Title = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Depts_Title, definitionRow, ColumnXls); break; - case "ExportSettings_AddHeader": Column.ExportSettings_AddHeader = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_AddHeader, definitionRow, ColumnXls); break; - case "ExportSettings_ExportColumns": Column.ExportSettings_ExportColumns = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_ExportColumns, definitionRow, ColumnXls); break; - case "ExportSettings_ExportSettingId": Column.ExportSettings_ExportSettingId = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_ExportSettingId, definitionRow, ColumnXls); break; - case "ExportSettings_ReferenceId": Column.ExportSettings_ReferenceId = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_ReferenceId, definitionRow, ColumnXls); break; - case "ExportSettings_ReferenceType": Column.ExportSettings_ReferenceType = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_ReferenceType, definitionRow, ColumnXls); break; - case "ExportSettings_Title": Column.ExportSettings_Title = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_Title, definitionRow, ColumnXls); break; case "Extensions_Body": Column.Extensions_Body = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Extensions_Body, definitionRow, ColumnXls); break; case "Extensions_Description": Column.Extensions_Description = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Extensions_Description, definitionRow, ColumnXls); break; case "Extensions_Disabled": Column.Extensions_Disabled = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Extensions_Disabled, definitionRow, ColumnXls); break; @@ -2031,14 +2025,6 @@ public static void SetColumnDefinition() case "Depts_Updator": Column.Depts_Updator = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Depts_Updator, definitionRow, ColumnXls); break; case "Depts_Ver": Column.Depts_Ver = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Depts_Ver, definitionRow, ColumnXls); break; case "Depts_VerUp": Column.Depts_VerUp = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Depts_VerUp, definitionRow, ColumnXls); break; - case "ExportSettings_Comments": Column.ExportSettings_Comments = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_Comments, definitionRow, ColumnXls); break; - case "ExportSettings_CreatedTime": Column.ExportSettings_CreatedTime = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_CreatedTime, definitionRow, ColumnXls); break; - case "ExportSettings_Creator": Column.ExportSettings_Creator = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_Creator, definitionRow, ColumnXls); break; - case "ExportSettings_Timestamp": Column.ExportSettings_Timestamp = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_Timestamp, definitionRow, ColumnXls); break; - case "ExportSettings_UpdatedTime": Column.ExportSettings_UpdatedTime = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_UpdatedTime, definitionRow, ColumnXls); break; - case "ExportSettings_Updator": Column.ExportSettings_Updator = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_Updator, definitionRow, ColumnXls); break; - case "ExportSettings_Ver": Column.ExportSettings_Ver = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_Ver, definitionRow, ColumnXls); break; - case "ExportSettings_VerUp": Column.ExportSettings_VerUp = definitionRow[1].ToString(); SetColumnTable(ColumnTable.ExportSettings_VerUp, definitionRow, ColumnXls); break; case "Extensions_Comments": Column.Extensions_Comments = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Extensions_Comments, definitionRow, ColumnXls); break; case "Extensions_CreatedTime": Column.Extensions_CreatedTime = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Extensions_CreatedTime, definitionRow, ColumnXls); break; case "Extensions_Creator": Column.Extensions_Creator = definitionRow[1].ToString(); SetColumnTable(ColumnTable.Extensions_Creator, definitionRow, ColumnXls); break; @@ -2397,6 +2383,11 @@ public static void SetColumnDefinition() data.ToInt(); newColumnDefinition.SavedPk = newColumnDefinition.Pk; break; + case "PkMySql": + newColumnDefinition.PkMySql = customDefinitionRow.Get("PkMySql")?.ToInt() ?? + data.ToInt(); + newColumnDefinition.SavedPkMySql = newColumnDefinition.PkMySql; + break; case "PkOrderBy": newColumnDefinition.PkOrderBy = customDefinitionRow.Get("PkOrderBy")?.ToString() ?? data.ToString(); @@ -2407,6 +2398,11 @@ public static void SetColumnDefinition() data.ToInt(); newColumnDefinition.SavedPkHistory = newColumnDefinition.PkHistory; break; + case "PkHistoryMySql": + newColumnDefinition.PkHistoryMySql = customDefinitionRow.Get("PkHistoryMySql")?.ToInt() ?? + data.ToInt(); + newColumnDefinition.SavedPkHistoryMySql = newColumnDefinition.PkHistoryMySql; + break; case "PkHistoryOrderBy": newColumnDefinition.PkHistoryOrderBy = customDefinitionRow.Get("PkHistoryOrderBy")?.ToString() ?? data.ToString(); @@ -2952,8 +2948,10 @@ private static void SetColumnTable(ColumnDefinition definition, XlsRow definitio if (definitionRow.ContainsKey("MaxLength")) { definition.MaxLength = definitionRow["MaxLength"].ToInt(); definition.SavedMaxLength = definition.MaxLength; } if (definitionRow.ContainsKey("Size")) { definition.Size = definitionRow["Size"].ToString(); definition.SavedSize = definition.Size; } if (definitionRow.ContainsKey("Pk")) { definition.Pk = definitionRow["Pk"].ToInt(); definition.SavedPk = definition.Pk; } + if (definitionRow.ContainsKey("PkMySql")) { definition.PkMySql = definitionRow["PkMySql"].ToInt(); definition.SavedPkMySql = definition.PkMySql; } if (definitionRow.ContainsKey("PkOrderBy")) { definition.PkOrderBy = definitionRow["PkOrderBy"].ToString(); definition.SavedPkOrderBy = definition.PkOrderBy; } if (definitionRow.ContainsKey("PkHistory")) { definition.PkHistory = definitionRow["PkHistory"].ToInt(); definition.SavedPkHistory = definition.PkHistory; } + if (definitionRow.ContainsKey("PkHistoryMySql")) { definition.PkHistoryMySql = definitionRow["PkHistoryMySql"].ToInt(); definition.SavedPkHistoryMySql = definition.PkHistoryMySql; } if (definitionRow.ContainsKey("PkHistoryOrderBy")) { definition.PkHistoryOrderBy = definitionRow["PkHistoryOrderBy"].ToString(); definition.SavedPkHistoryOrderBy = definition.PkHistoryOrderBy; } if (definitionRow.ContainsKey("Ix1")) { definition.Ix1 = definitionRow["Ix1"].ToInt(); definition.SavedIx1 = definition.Ix1; } if (definitionRow.ContainsKey("Ix1OrderBy")) { definition.Ix1OrderBy = definitionRow["Ix1OrderBy"].ToString(); definition.SavedIx1OrderBy = definition.Ix1OrderBy; } @@ -5764,8 +5762,10 @@ public static void SetColumnDefinitionOption( case "MaxLength": columnDefinition.MaxLength = optionValue.ToInt(); break; case "Size": columnDefinition.Size = optionValue.ToString(); break; case "Pk": columnDefinition.Pk = optionValue.ToInt(); break; + case "PkMySql": columnDefinition.PkMySql = optionValue.ToInt(); break; case "PkOrderBy": columnDefinition.PkOrderBy = optionValue.ToString(); break; case "PkHistory": columnDefinition.PkHistory = optionValue.ToInt(); break; + case "PkHistoryMySql": columnDefinition.PkHistoryMySql = optionValue.ToInt(); break; case "PkHistoryOrderBy": columnDefinition.PkHistoryOrderBy = optionValue.ToString(); break; case "Ix1": columnDefinition.Ix1 = optionValue.ToInt(); break; case "Ix1OrderBy": columnDefinition.Ix1OrderBy = optionValue.ToString(); break; @@ -8512,8 +8512,10 @@ public class ColumnDefinition public int MaxLength; public int SavedMaxLength; public string Size; public string SavedSize; public int Pk; public int SavedPk; + public int PkMySql; public int SavedPkMySql; public string PkOrderBy; public string SavedPkOrderBy; public int PkHistory; public int SavedPkHistory; + public int PkHistoryMySql; public int SavedPkHistoryMySql; public string PkHistoryOrderBy; public string SavedPkHistoryOrderBy; public int Ix1; public int SavedIx1; public string Ix1OrderBy; public string SavedIx1OrderBy; @@ -8653,8 +8655,10 @@ public ColumnDefinition(Dictionary propertyCollection) if (propertyCollection.ContainsKey("MaxLength")) MaxLength = propertyCollection["MaxLength"].ToInt(); else MaxLength = 0; if (propertyCollection.ContainsKey("Size")) Size = propertyCollection["Size"].ToString(); else Size = string.Empty; if (propertyCollection.ContainsKey("Pk")) Pk = propertyCollection["Pk"].ToInt(); else Pk = 0; + if (propertyCollection.ContainsKey("PkMySql")) PkMySql = propertyCollection["PkMySql"].ToInt(); else PkMySql = 0; if (propertyCollection.ContainsKey("PkOrderBy")) PkOrderBy = propertyCollection["PkOrderBy"].ToString(); else PkOrderBy = string.Empty; if (propertyCollection.ContainsKey("PkHistory")) PkHistory = propertyCollection["PkHistory"].ToInt(); else PkHistory = 0; + if (propertyCollection.ContainsKey("PkHistoryMySql")) PkHistoryMySql = propertyCollection["PkHistoryMySql"].ToInt(); else PkHistoryMySql = 0; if (propertyCollection.ContainsKey("PkHistoryOrderBy")) PkHistoryOrderBy = propertyCollection["PkHistoryOrderBy"].ToString(); else PkHistoryOrderBy = string.Empty; if (propertyCollection.ContainsKey("Ix1")) Ix1 = propertyCollection["Ix1"].ToInt(); else Ix1 = 0; if (propertyCollection.ContainsKey("Ix1OrderBy")) Ix1OrderBy = propertyCollection["Ix1OrderBy"].ToString(); else Ix1OrderBy = string.Empty; @@ -8794,8 +8798,10 @@ public object this[string key] case "MaxLength": return MaxLength; case "Size": return Size; case "Pk": return Pk; + case "PkMySql": return PkMySql; case "PkOrderBy": return PkOrderBy; case "PkHistory": return PkHistory; + case "PkHistoryMySql": return PkHistoryMySql; case "PkHistoryOrderBy": return PkHistoryOrderBy; case "Ix1": return Ix1; case "Ix1OrderBy": return Ix1OrderBy; @@ -8935,8 +8941,10 @@ public void RestoreBySavedMemory() MaxLength = SavedMaxLength; Size = SavedSize; Pk = SavedPk; + PkMySql = SavedPkMySql; PkOrderBy = SavedPkOrderBy; PkHistory = SavedPkHistory; + PkHistoryMySql = SavedPkHistoryMySql; PkHistoryOrderBy = SavedPkHistoryOrderBy; Ix1 = SavedIx1; Ix1OrderBy = SavedIx1OrderBy; @@ -9094,12 +9102,6 @@ public class ColumnColumn2nd public string Depts_Disabled; public string Depts_TenantId; public string Depts_Title; - public string ExportSettings_AddHeader; - public string ExportSettings_ExportColumns; - public string ExportSettings_ExportSettingId; - public string ExportSettings_ReferenceId; - public string ExportSettings_ReferenceType; - public string ExportSettings_Title; public string Extensions_Body; public string Extensions_Description; public string Extensions_Disabled; @@ -9430,14 +9432,6 @@ public class ColumnColumn2nd public string Depts_Updator; public string Depts_Ver; public string Depts_VerUp; - public string ExportSettings_Comments; - public string ExportSettings_CreatedTime; - public string ExportSettings_Creator; - public string ExportSettings_Timestamp; - public string ExportSettings_UpdatedTime; - public string ExportSettings_Updator; - public string ExportSettings_Ver; - public string ExportSettings_VerUp; public string Extensions_Comments; public string Extensions_CreatedTime; public string Extensions_Creator; @@ -9676,12 +9670,6 @@ public class ColumnTable public ColumnDefinition Depts_Disabled = new ColumnDefinition(); public ColumnDefinition Depts_TenantId = new ColumnDefinition(); public ColumnDefinition Depts_Title = new ColumnDefinition(); - public ColumnDefinition ExportSettings_AddHeader = new ColumnDefinition(); - public ColumnDefinition ExportSettings_ExportColumns = new ColumnDefinition(); - public ColumnDefinition ExportSettings_ExportSettingId = new ColumnDefinition(); - public ColumnDefinition ExportSettings_ReferenceId = new ColumnDefinition(); - public ColumnDefinition ExportSettings_ReferenceType = new ColumnDefinition(); - public ColumnDefinition ExportSettings_Title = new ColumnDefinition(); public ColumnDefinition Extensions_Body = new ColumnDefinition(); public ColumnDefinition Extensions_Description = new ColumnDefinition(); public ColumnDefinition Extensions_Disabled = new ColumnDefinition(); @@ -10012,14 +10000,6 @@ public class ColumnTable public ColumnDefinition Depts_Updator = new ColumnDefinition(); public ColumnDefinition Depts_Ver = new ColumnDefinition(); public ColumnDefinition Depts_VerUp = new ColumnDefinition(); - public ColumnDefinition ExportSettings_Comments = new ColumnDefinition(); - public ColumnDefinition ExportSettings_CreatedTime = new ColumnDefinition(); - public ColumnDefinition ExportSettings_Creator = new ColumnDefinition(); - public ColumnDefinition ExportSettings_Timestamp = new ColumnDefinition(); - public ColumnDefinition ExportSettings_UpdatedTime = new ColumnDefinition(); - public ColumnDefinition ExportSettings_Updator = new ColumnDefinition(); - public ColumnDefinition ExportSettings_Ver = new ColumnDefinition(); - public ColumnDefinition ExportSettings_VerUp = new ColumnDefinition(); public ColumnDefinition Extensions_Comments = new ColumnDefinition(); public ColumnDefinition Extensions_CreatedTime = new ColumnDefinition(); public ColumnDefinition Extensions_Creator = new ColumnDefinition(); @@ -13618,20 +13598,15 @@ public void RestoreBySavedMemory() /// public class SqlColumn2nd { - public string BeginTransaction; - public string CommitTransaction; public string HasPermission; public string CanReadSites; public string CanRead; - public string SiteDepts; public string ProgressRateDelay; public string MoveTarget; public string StartTimeColumn; public string CompletionTimeColumn; public string IfDuplicated; - public string IfConflicted; public string SelectIdentity; - public string TruncateTemplate; public string ExistsDatabase; public string CreateDatabase; public string SpWho; @@ -13654,15 +13629,11 @@ public class SqlColumn2nd public string DropIndex; public string MigrateTableWithIdentity; public string MigrateTable; - public string BulkInsert; public string Identity; public string Spaceused; public string SelectPkName; + public string ExistsFullText; public string CreateFullText; - public string ExistsLoginRole; - public string DropLoginRole; - public string DropUser; - public string CreateLoginRole; public string ExistsSchema; public string CreateSchema; public string CreateDatabaseForPostgres; @@ -13680,6 +13651,7 @@ public class SqlColumn2nd public string RefreshAllChildMembers; public string LdapUpdateGroupMembersAndChildren; public string AdGroupDeleteToDisable; + public string ModifyColumn; } /// @@ -13687,20 +13659,15 @@ public class SqlColumn2nd /// public class SqlTable { - public SqlDefinition BeginTransaction = new SqlDefinition(); - public SqlDefinition CommitTransaction = new SqlDefinition(); public SqlDefinition HasPermission = new SqlDefinition(); public SqlDefinition CanReadSites = new SqlDefinition(); public SqlDefinition CanRead = new SqlDefinition(); - public SqlDefinition SiteDepts = new SqlDefinition(); public SqlDefinition ProgressRateDelay = new SqlDefinition(); public SqlDefinition MoveTarget = new SqlDefinition(); public SqlDefinition StartTimeColumn = new SqlDefinition(); public SqlDefinition CompletionTimeColumn = new SqlDefinition(); public SqlDefinition IfDuplicated = new SqlDefinition(); - public SqlDefinition IfConflicted = new SqlDefinition(); public SqlDefinition SelectIdentity = new SqlDefinition(); - public SqlDefinition TruncateTemplate = new SqlDefinition(); public SqlDefinition ExistsDatabase = new SqlDefinition(); public SqlDefinition CreateDatabase = new SqlDefinition(); public SqlDefinition SpWho = new SqlDefinition(); @@ -13723,10 +13690,10 @@ public class SqlTable public SqlDefinition DropIndex = new SqlDefinition(); public SqlDefinition MigrateTableWithIdentity = new SqlDefinition(); public SqlDefinition MigrateTable = new SqlDefinition(); - public SqlDefinition BulkInsert = new SqlDefinition(); public SqlDefinition Identity = new SqlDefinition(); public SqlDefinition Spaceused = new SqlDefinition(); public SqlDefinition SelectPkName = new SqlDefinition(); + public SqlDefinition ExistsFullText = new SqlDefinition(); public SqlDefinition CreateFullText = new SqlDefinition(); public SqlDefinition ExistsSchema = new SqlDefinition(); public SqlDefinition CreateSchema = new SqlDefinition(); @@ -13734,5 +13701,6 @@ public class SqlTable public SqlDefinition CreateUserForPostgres = new SqlDefinition(); public SqlDefinition ChangeDatabaseOwnerForPostgres = new SqlDefinition(); public SqlDefinition GrantDatabaseForPostgres = new SqlDefinition(); + public SqlDefinition ModifyColumn = new SqlDefinition(); } } diff --git a/Implem.DefinitionAccessor/Implem.DefinitionAccessor.csproj b/Implem.DefinitionAccessor/Implem.DefinitionAccessor.csproj index 3142b0485..193a0ee97 100644 --- a/Implem.DefinitionAccessor/Implem.DefinitionAccessor.csproj +++ b/Implem.DefinitionAccessor/Implem.DefinitionAccessor.csproj @@ -3,9 +3,9 @@ net8.0 Copyright © Implem Inc 2014 - 2024 - 1.4.8.1 - 1.4.8.1 - 1.4.8.1 + 1.4.9.0 + 1.4.9.0 + 1.4.9.0 disable diff --git a/Implem.DefinitionAccessor/Initializer.cs b/Implem.DefinitionAccessor/Initializer.cs index c1ed2508d..809ff7216 100644 --- a/Implem.DefinitionAccessor/Initializer.cs +++ b/Implem.DefinitionAccessor/Initializer.cs @@ -1052,8 +1052,6 @@ private static void SetSqls() { Sqls.LogsPath = Directories.Logs(); Sqls.SelectIdentity = Def.Sql.SelectIdentity; - Sqls.BeginTransaction = Def.Sql.BeginTransaction; - Sqls.CommitTransaction = Def.Sql.CommitTransaction; } private static void SetBundleVersions() diff --git a/Implem.DisplayAccessor/Implem.DisplayAccessor.csproj b/Implem.DisplayAccessor/Implem.DisplayAccessor.csproj index 0919bb634..4a17f330f 100644 --- a/Implem.DisplayAccessor/Implem.DisplayAccessor.csproj +++ b/Implem.DisplayAccessor/Implem.DisplayAccessor.csproj @@ -3,9 +3,9 @@ net8.0 Copyright © Implem Inc 2014 - 2024 - 1.4.8.1 - 1.4.8.1 - 1.4.8.1 + 1.4.9.0 + 1.4.9.0 + 1.4.9.0 disable diff --git a/Implem.Factory/Implem.Factory.csproj b/Implem.Factory/Implem.Factory.csproj index 0e6877d37..a785a70eb 100644 --- a/Implem.Factory/Implem.Factory.csproj +++ b/Implem.Factory/Implem.Factory.csproj @@ -3,15 +3,16 @@ net8.0 Copyright © Implem Inc 2014 - 2024 - 1.4.8.1 - 1.4.8.1 - 1.4.8.1 + 1.4.9.0 + 1.4.9.0 + 1.4.9.0 disable + diff --git a/Implem.Factory/RdsFactory.cs b/Implem.Factory/RdsFactory.cs index 1eac93d25..6be6c7517 100644 --- a/Implem.Factory/RdsFactory.cs +++ b/Implem.Factory/RdsFactory.cs @@ -2,6 +2,7 @@ using Implem.IRds; using Implem.SqlServer; using Implem.PostgreSql; +using Implem.MySql; namespace Implem.Factory { public static class RdsFactory @@ -14,6 +15,8 @@ public static ISqlObjectFactory Create(string dbms) return (ISqlObjectFactory)Activator.CreateInstance(typeof(SqlServerObjectFactory)); case "PostgreSQL": return (ISqlObjectFactory)Activator.CreateInstance(typeof(PostgreSqlObjectFactory)); + case "MySQL": + return (ISqlObjectFactory)Activator.CreateInstance(typeof(MySqlObjectFactory)); default: throw new NotSupportedException($"DBMS[{dbms}] is not supported by Pleasanter."); } diff --git a/Implem.Libraries/DataSources/SqlServer/SqlColumn.cs b/Implem.Libraries/DataSources/SqlServer/SqlColumn.cs index dd8efa922..5d2ae7f78 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlColumn.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlColumn.cs @@ -56,7 +56,7 @@ public string CommandText( + AsBracket(); } - private string AsBracket() + internal string AsBracket() { return As != null ? " as \"" + As + "\"" diff --git a/Implem.Libraries/DataSources/SqlServer/SqlDebugs.cs b/Implem.Libraries/DataSources/SqlServer/SqlDebugs.cs index 78fe82899..c1e74c232 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlDebugs.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlDebugs.cs @@ -19,9 +19,10 @@ public static void WriteSqlLog(string provider, string rdsName, ISqlCommand sqlC { case "SQLServer": WriteSqlServerLog(rdsName, sqlCommand, logsPath); - break; + break; case "PostgreSQL": - WritePostgreSqlLog(sqlCommand, logsPath); + case "MySQL": + WriteOptionalDbmsLog(sqlCommand, logsPath); break; } } @@ -39,7 +40,7 @@ public static void WriteSqlServerLog(string rdsName, ISqlCommand sqlCommand, str } } - public static void WritePostgreSqlLog(ISqlCommand sqlCommand, string logsPath) + public static void WriteOptionalDbmsLog(ISqlCommand sqlCommand, string logsPath) { var commandTextForDebugging = FormattedCommandText(sqlCommand); var parameters = sqlCommand.SqlParameters() diff --git a/Implem.Libraries/DataSources/SqlServer/SqlDelete.cs b/Implem.Libraries/DataSources/SqlServer/SqlDelete.cs index 02295f2ef..b283f253b 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlDelete.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlDelete.cs @@ -1,5 +1,6 @@ using Implem.IRds; using Implem.Libraries.Utilities; +using System.Linq; using System.Text; namespace Implem.Libraries.DataSources.SqlServer { @@ -18,6 +19,7 @@ public override void BuildCommandText( { if (!Using) return; Build_If(commandText: commandText); + SetMainQueryInfoForSub(); Build_DeleteStatement( factory: factory, sqlContainer: sqlContainer, @@ -51,5 +53,14 @@ private void Build_DeleteStatement( sqlCommand: sqlCommand, commandCount: commandCount)))); } + + private void SetMainQueryInfoForSub() + { + SqlWhereCollection + .Where(o => o.Sub != null) + .ForEach(o => o.Sub.SetMainQueryInfo( + sqlClass: GetType().ToString(), + allTableBrackets: GetAllTableBrackets())); + } } } diff --git a/Implem.Libraries/DataSources/SqlServer/SqlIo.cs b/Implem.Libraries/DataSources/SqlServer/SqlIo.cs index 656cee4f7..ed8332cf1 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlIo.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlIo.cs @@ -7,6 +7,7 @@ using System.Data.Common; using System.Linq; using System.Text; +using System.Text.RegularExpressions; namespace Implem.Libraries.DataSources.SqlServer { public class SqlIo : IDisposable @@ -53,6 +54,7 @@ private void SetCommandUserParams() private void SetCommandText(ISqlObjectFactory factory) { + CommandText.AppendLine(factory.SqlCommandText.BeforeAllCommand()); SqlContainer.SqlStatementCollection .Select((o, i) => new { @@ -87,8 +89,9 @@ private void SetCommandText(ISqlObjectFactory factory) [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2100:SQL It has been confirmed that the vulnerability on the query of security does not exist")] private void SetSqlCommand(ISqlObjectFactory factory) { + var commandTextReplaced = new Regex(";(| |;)+;").Replace(CommandText.ToString(), ";"); SqlCommand.CommandType = CommandType.Text; - SqlCommand.CommandText = CommandText.ToString(); + SqlCommand.CommandText = commandTextReplaced; SqlCommand.CommandTimeout = SqlContainer.CommandTimeOut; } diff --git a/Implem.Libraries/DataSources/SqlServer/SqlOrderByCollection.cs b/Implem.Libraries/DataSources/SqlServer/SqlOrderByCollection.cs index b0f718ba2..1a8fae3eb 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlOrderByCollection.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlOrderByCollection.cs @@ -67,10 +67,7 @@ public void BuildCommandText( " "); if (pageSize != 0) { - commandText.Append( - $"offset {Parameters.Parameter.SqlParameterPrefix}Offset", commandCount.ToString(), - $" rows fetch next {Parameters.Parameter.SqlParameterPrefix}PageSize", commandCount.ToString(), - " rows only "); + commandText.Append(factory.SqlCommandText.CreateDataRangeCommand(commandCount)); } } } diff --git a/Implem.Libraries/DataSources/SqlServer/SqlPhysicalDelete.cs b/Implem.Libraries/DataSources/SqlServer/SqlPhysicalDelete.cs index 9ebaba23b..d468614e6 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlPhysicalDelete.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlPhysicalDelete.cs @@ -1,4 +1,6 @@ using Implem.IRds; +using Implem.Libraries.Utilities; +using System.Linq; using System.Text; namespace Implem.Libraries.DataSources.SqlServer { @@ -18,6 +20,7 @@ public override void BuildCommandText( if (!Using) return; Build_If(commandText); commandText.Append(Statement(commandCount)); + SetMainQueryInfoForSub(); SqlWhereCollection?.BuildCommandText( factory: factory, sqlContainer: sqlContainer, @@ -43,8 +46,17 @@ private string Statement(int? commandCount) case Sqls.TableTypes.Deleted: return "delete from " + DeletedTableBracket + " "; default: - return string.Empty; + return string.Empty; } } + + private void SetMainQueryInfoForSub() + { + SqlWhereCollection + .Where(o => o.Sub != null) + .ForEach(o => o.Sub.SetMainQueryInfo( + sqlClass: GetType().ToString(), + allTableBrackets: GetAllTableBrackets())); + } } } diff --git a/Implem.Libraries/DataSources/SqlServer/SqlRestore.cs b/Implem.Libraries/DataSources/SqlServer/SqlRestore.cs index bb43a9d73..d1a33fbb2 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlRestore.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlRestore.cs @@ -1,5 +1,6 @@ using Implem.IRds; using Implem.Libraries.Utilities; +using System.Linq; using System.Text; namespace Implem.Libraries.DataSources.SqlServer { @@ -18,6 +19,7 @@ public override void BuildCommandText( { if (!Using) return; Build_If(commandText); + SetMainQueryInfoForSub(); Build_RestoreStatement( factory: factory, sqlContainer: sqlContainer, @@ -51,5 +53,27 @@ private void Build_RestoreStatement( sqlCommand: sqlCommand, commandCount: commandCount)))); } + + private string GetTableBracketText() + { + switch (TableType) + { + case Sqls.TableTypes.History: + return HistoryTableBracket; + case Sqls.TableTypes.Deleted: + return DeletedTableBracket; + default: + return TableBracket; + } + } + + private void SetMainQueryInfoForSub() + { + SqlWhereCollection + .Where(o => o.Sub != null) + .ForEach(o => o.Sub.SetMainQueryInfo( + sqlClass: GetType().ToString(), + allTableBrackets: GetAllTableBrackets())); + } } } diff --git a/Implem.Libraries/DataSources/SqlServer/SqlSelect.cs b/Implem.Libraries/DataSources/SqlServer/SqlSelect.cs index b95f31ec0..918c54252 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlSelect.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlSelect.cs @@ -1,6 +1,7 @@ using Implem.DefinitionAccessor; using Implem.IRds; using Implem.Libraries.Utilities; +using System.Linq; using System.Text; namespace Implem.Libraries.DataSources.SqlServer { @@ -24,6 +25,10 @@ public override void BuildCommandText( StringBuilder commandText, int? commandCount = null) { + if (!MainQueryInfo.sqlClass.IsNullOrEmpty()) + { + SetMainQueryInfoForSub(); + } switch (TableType) { case Sqls.TableTypes.History: @@ -251,6 +256,80 @@ private void BuildCommandText( int? commandCount) { if (!Using) return; + var tableBrackets = GetAllTableBrackets(); + SqlJoinCollection?.ForEach(o => tableBrackets.Add(o.TableBracket)); + if (Parameters.Rds.Dbms == "MySQL" && + !MainQueryInfo.sqlClass.IsNullOrEmpty() && + tableBrackets.FindAll(MainQueryInfo.allTableBrackets.Contains) != null) + { + GetSelectFromSelectCommand( + factory: factory, + sqlContainer: sqlContainer, + sqlCommand: sqlCommand, + commandText: commandText, + tableType: tableType, + unionType: unionType, + orderBy: orderBy, + commandCount: commandCount); + } + else + { + GetSelectFromTableCommand( + factory: factory, + sqlContainer: sqlContainer, + sqlCommand: sqlCommand, + commandText: commandText, + tableType: tableType, + unionType: unionType, + orderBy: orderBy, + commandCount: commandCount); + } + } + + private void GetSelectFromSelectCommand( + ISqlObjectFactory factory, + SqlContainer sqlContainer, + ISqlCommand sqlCommand, + StringBuilder commandText, + Sqls.TableTypes tableType, + Sqls.UnionTypes unionType, + bool orderBy, + int? commandCount) + { + var subQueryStart = "select #TablenameTemp#.#Columnname# from ("; + var subQueryEnd = ") as #TablenameTemp#"; + var tablenameTemp = As.IsNullOrEmpty() + ? $@"""{TableBracket.Replace(@"""",string.Empty)}Temp""" + : $@"""{As}Temp"""; + var columnname = SqlColumnCollection.FirstOrDefault().AsBracket().IsNullOrEmpty() + ? $@"""{SqlColumnCollection.FirstOrDefault().ColumnName}""" + : SqlColumnCollection.FirstOrDefault().AsBracket().Replace(" as ", string.Empty); + commandText.Append(subQueryStart + .Replace("#TablenameTemp#", tablenameTemp) + .Replace("#Columnname#", columnname)); + GetSelectFromTableCommand( + factory: factory, + sqlContainer: sqlContainer, + sqlCommand: sqlCommand, + commandText: commandText, + tableType: tableType, + unionType: unionType, + orderBy: orderBy, + commandCount: commandCount); + commandText.Append(subQueryEnd + .Replace("#TablenameTemp#", tablenameTemp)); + } + + private void GetSelectFromTableCommand( + ISqlObjectFactory factory, + SqlContainer sqlContainer, + ISqlCommand sqlCommand, + StringBuilder commandText, + Sqls.TableTypes tableType, + Sqls.UnionTypes unionType, + bool orderBy, + int? commandCount) + { AddUnion(commandText, unionType); SqlColumnCollection?.BuildCommandText( factory: factory, @@ -333,5 +412,14 @@ private string From(Sqls.TableTypes tableType, string _as) ? " as \"" + _as + "\"" : " as " + TableBracket) + "\n"; } + + private void SetMainQueryInfoForSub() + { + SqlWhereCollection + .Where(o => o.Sub != null) + .ForEach(o => o.Sub.SetMainQueryInfo( + sqlClass: MainQueryInfo.sqlClass, + allTableBrackets: MainQueryInfo.allTableBrackets)); + } } } diff --git a/Implem.Libraries/DataSources/SqlServer/SqlStatement.cs b/Implem.Libraries/DataSources/SqlServer/SqlStatement.cs index b9a218348..7fe41f250 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlStatement.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlStatement.cs @@ -34,6 +34,7 @@ public class SqlStatement public bool IsRowCount = false; public long? Id; public IEnumerable AdditionalParams; + public (string sqlClass, List allTableBrackets) MainQueryInfo; public SqlStatement() { @@ -262,5 +263,18 @@ public string GetTableBracket() default: return null; } } + + public void SetMainQueryInfo( + string sqlClass, + List allTableBrackets) + { + MainQueryInfo.sqlClass = sqlClass; + MainQueryInfo.allTableBrackets = allTableBrackets; + } + + public List GetAllTableBrackets() + { + return [TableBracket, HistoryTableBracket, DeletedTableBracket]; + } } } diff --git a/Implem.Libraries/DataSources/SqlServer/SqlUpdate.cs b/Implem.Libraries/DataSources/SqlServer/SqlUpdate.cs index 491a976a7..c81fa8969 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlUpdate.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlUpdate.cs @@ -27,6 +27,7 @@ public override void BuildCommandText( sqlCommand: sqlCommand, commandText: commandText, commandCount: commandCount); + SetMainQueryInfoForSub(); SqlWhereCollection?.BuildCommandText( factory: factory, sqlContainer: sqlContainer, @@ -101,6 +102,15 @@ private void Build_UpdateStatement( " set ", columnNameCollection.Join(), " "); } + private void SetMainQueryInfoForSub() + { + SqlWhereCollection + .Where(o => o.Sub != null) + .ForEach(o => o.Sub.SetMainQueryInfo( + sqlClass: GetType().ToString(), + allTableBrackets: GetAllTableBrackets())); + } + private void Build_CopyToHistoryStatement( StringBuilder commandText, string commandText_MoveToHistory, int? commandCount) { diff --git a/Implem.Libraries/DataSources/SqlServer/SqlUpdateOrInsert.cs b/Implem.Libraries/DataSources/SqlServer/SqlUpdateOrInsert.cs index 404217dee..e99f355dc 100644 --- a/Implem.Libraries/DataSources/SqlServer/SqlUpdateOrInsert.cs +++ b/Implem.Libraries/DataSources/SqlServer/SqlUpdateOrInsert.cs @@ -117,6 +117,11 @@ private void Build_UpdateOrInsertStatement( valueCollection.Add("@" + sqlParam.VariableName + commandCount.ToStr()); } }); + var selectCollectionForMySql = new List(); + for (var i = 0; i < insertColumnNameCollection.Count(); i++) + { + selectCollectionForMySql.Add(valueCollection[i] + " as " + insertColumnNameCollection[i]); + } commandText.Append(factory.SqlCommandText.CreateUpdateOrInsert( tableBracket: tableBracket, setClause: $" set {updateColumnNameCollection.Join()} ", @@ -128,7 +133,8 @@ private void Build_UpdateOrInsertStatement( commandText: commandText_, commandCount: commandCount), intoClause: insertColumnNameCollection.Join(), - valueClause: valueCollection.Join())); + valueClause: valueCollection.Join(), + selectClauseForMySql: selectCollectionForMySql.Join())); } } } diff --git a/Implem.Libraries/DataSources/SqlServer/Sqls.cs b/Implem.Libraries/DataSources/SqlServer/Sqls.cs index f495bd8d4..e312faaf1 100644 --- a/Implem.Libraries/DataSources/SqlServer/Sqls.cs +++ b/Implem.Libraries/DataSources/SqlServer/Sqls.cs @@ -10,8 +10,6 @@ public static class Sqls { public static string LogsPath; public static string SelectIdentity; - public static string BeginTransaction; - public static string CommitTransaction; public enum TableTypes { diff --git a/Implem.Libraries/Implem.Libraries.csproj b/Implem.Libraries/Implem.Libraries.csproj index 37065af33..df8884eb4 100644 --- a/Implem.Libraries/Implem.Libraries.csproj +++ b/Implem.Libraries/Implem.Libraries.csproj @@ -3,9 +3,9 @@ net8.0 Copyright © Implem Inc 2014 - 2024 - 1.4.8.1 - 1.4.8.1 - 1.4.8.1 + 1.4.9.0 + 1.4.9.0 + 1.4.9.0 disable diff --git a/Implem.Libraries/Utilities/Consoles.cs b/Implem.Libraries/Utilities/Consoles.cs index d847996ff..18e7ae404 100644 --- a/Implem.Libraries/Utilities/Consoles.cs +++ b/Implem.Libraries/Utilities/Consoles.cs @@ -1,8 +1,10 @@ using System; using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Text.RegularExpressions; namespace Implem.Libraries.Utilities { - public static class Consoles + public static partial class Consoles { public static int ErrorCount { get; private set; } = 0; public enum Types @@ -12,21 +14,31 @@ public enum Types Error } - public static void Write(string text, Types type, bool abort = false) + public static void Write( + string text, + Types type, + bool abort = false, + [CallerFilePath] string callerFilePath = "", + [CallerMemberName] string callerMemberName = "") { - var method = new StackFrame(1).GetMethod(); - var publisher = method.ReflectedType.Name + "." + method.Name; + var match = GetFileNameRegex().Match(callerFilePath); + var className = match.Success ? match.Value : ""; + + var publisher = $"{className}.{callerMemberName}"; Trace.WriteLine("<{0}> {1}: {2}".Params( type.ToString().ToUpper(), publisher, text)); Trace.Flush(); - if(type == Types.Error) ErrorCount++; + if (type == Types.Error) ErrorCount++; if (abort) { Console.ReadKey(); Environment.Exit(-1); } } + + [GeneratedRegex(@"[^\\/]+(?=\.[^\\/]+$)")] + private static partial Regex GetFileNameRegex(); } } diff --git a/Implem.ParameterAccessor/Implem.ParameterAccessor.csproj b/Implem.ParameterAccessor/Implem.ParameterAccessor.csproj index 7d8c1cb5f..838fa9e01 100644 --- a/Implem.ParameterAccessor/Implem.ParameterAccessor.csproj +++ b/Implem.ParameterAccessor/Implem.ParameterAccessor.csproj @@ -3,9 +3,9 @@ net8.0 Copyright © Implem Inc 2014 - 2024 - 1.4.8.1 - 1.4.8.1 - 1.4.8.1 + 1.4.9.0 + 1.4.9.0 + 1.4.9.0 disable diff --git a/Implem.ParameterAccessor/Parameters.cs b/Implem.ParameterAccessor/Parameters.cs index 1e255f2b2..6d3e192b5 100644 --- a/Implem.ParameterAccessor/Parameters.cs +++ b/Implem.ParameterAccessor/Parameters.cs @@ -26,6 +26,7 @@ public static class Parameters public static List ExtendedServerScripts; public static List ExtendedSqls; public static List ExtendedStyles; + public static List ExtendedHeadLinks; public static List ExtendedPlugins; public static Dictionary ExtendedTags; public static General General; diff --git a/Implem.ParameterAccessor/Parts/ExtendedHeadLink.cs b/Implem.ParameterAccessor/Parts/ExtendedHeadLink.cs new file mode 100644 index 000000000..25df365b3 --- /dev/null +++ b/Implem.ParameterAccessor/Parts/ExtendedHeadLink.cs @@ -0,0 +1,7 @@ +namespace Implem.ParameterAccessor.Parts +{ + public class ExtendedHeadLink : ExtendedBase + { + public string Link; + } +} \ No newline at end of file diff --git a/Implem.ParameterAccessor/Parts/General.cs b/Implem.ParameterAccessor/Parts/General.cs index e193ab727..a1f61bca0 100644 --- a/Implem.ParameterAccessor/Parts/General.cs +++ b/Implem.ParameterAccessor/Parts/General.cs @@ -102,6 +102,7 @@ public class General public bool HideCurrentUserIcon; public bool HideCurrentDeptIcon; public bool EnableLightBox; + public bool EnableCodeEditor; public int GroupsDepthMax; public int BulkUpsertMax; } diff --git a/Implem.Pleasanter.sln b/Implem.Pleasanter.sln index bd11745f1..d1af8ced9 100644 --- a/Implem.Pleasanter.sln +++ b/Implem.Pleasanter.sln @@ -46,6 +46,8 @@ Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-co EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Implem.Plugins", "Implem.Plugins\Implem.Plugins.csproj", "{DB7A8513-48C4-4226-92F9-60FD4DB90DD8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implem.MySql", "Rds\Implem.MySql\Implem.MySql.csproj", "{7BF47007-3BB2-44F6-85B2-E50B215D40ED}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution CD_ROM|Any CPU = CD_ROM|Any CPU @@ -183,6 +185,16 @@ Global {DB7A8513-48C4-4226-92F9-60FD4DB90DD8}.Release|Any CPU.Build.0 = Release|Any CPU {DB7A8513-48C4-4226-92F9-60FD4DB90DD8}.SingleImage|Any CPU.ActiveCfg = Debug|Any CPU {DB7A8513-48C4-4226-92F9-60FD4DB90DD8}.SingleImage|Any CPU.Build.0 = Debug|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.CD_ROM|Any CPU.ActiveCfg = Debug|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.CD_ROM|Any CPU.Build.0 = Debug|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.DVD-5|Any CPU.Build.0 = Debug|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.Release|Any CPU.Build.0 = Release|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.SingleImage|Any CPU.ActiveCfg = Debug|Any CPU + {7BF47007-3BB2-44F6-85B2-E50B215D40ED}.SingleImage|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -191,6 +203,7 @@ Global {C2AC0AF2-9CB2-4341-87AE-4DCEE66D06EB} = {1D98B5AE-6FFD-4BA7-BE9B-81BBEF3CC7EB} {0D5D7AE5-40B4-4C85-A6E2-FBA1982B8D1B} = {1D98B5AE-6FFD-4BA7-BE9B-81BBEF3CC7EB} {DBFBDBBF-4E33-4CE0-A684-445B752A641B} = {1D98B5AE-6FFD-4BA7-BE9B-81BBEF3CC7EB} + {7BF47007-3BB2-44F6-85B2-E50B215D40ED} = {1D98B5AE-6FFD-4BA7-BE9B-81BBEF3CC7EB} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6E97E664-D49F-4BFC-930F-F941C4996E2C} diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Export_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Export_Body.txt index f968d6c3d..001394633 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Export_Body.txt +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Export_Body.txt @@ -275,9 +275,20 @@ namespace Implem.Pleasanter.Models case "Class": Class( columnName: columnName, - value: idHash.Get(ClassHash.Get(columnName).ToLong())); + value: ReplaceClassIdHash(ClassHash.Get(columnName),idHash)); break; } } + + private static System.Text.RegularExpressions.Regex RegexIdPattern = new System.Text.RegularExpressions.Regex(@"\b(? idHash) + { + return (v == null) + ? null + : RegexIdPattern.Replace( + v.ToStr(), + new System.Text.RegularExpressions.MatchEvaluator(m => idHash.Get(m.Value.ToLong()).ToStr())); + } } } \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_PhysicalDelete_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_PhysicalDelete_Body.txt index 40da8043c..5c7b80725 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_PhysicalDelete_Body.txt +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_PhysicalDelete_Body.txt @@ -6,6 +6,6 @@ transactional: true, statements: Rds.PhysicalDelete#TableName#( tableType: tableType, - param: Rds.#TableName#Param())); + where: Rds.#TableName#Where())); return new ErrorData(type: Error.Types.None); } \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_SwitchItems_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_SwitchItems_Body.txt index 885048e28..bc53fe957 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_SwitchItems_Body.txt +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_SwitchItems_Body.txt @@ -814,6 +814,13 @@ public string OpenSetDateRangeDialog(Context context) var column = Site.SiteSettings.GetColumn( context: context, columnName: columnName); + if (column == null) + { + Parameters.ExtendedFields.ForEach(extendedField => + { + if (extendedField.Name == columnName) column = new Implem.Pleasanter.Libraries.Settings.Column(extendedField.Name); + }); + } return new ResponseCollection(context: context) .Html( "#SetDateRangeDialog", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Update_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Update_Body.txt index 4e95cfb47..caec30839 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Update_Body.txt +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Update_Body.txt @@ -140,7 +140,7 @@ private List UpdateStatements( ss: ss, #modelName#Model: this, otherInitValue: otherInitValue)), - new SqlStatement(Def.Sql.IfConflicted.Params(#ModelName#Id)) + new SqlStatement() { DataTableName = dataTableName, IfConflicted = true, diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Depts_DeptId.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Depts_DeptId.json index 53a7d6538..8b0d5960f 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Depts_DeptId.json +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Depts_DeptId.json @@ -15,7 +15,9 @@ "HistoryColumn": "2", "TypeName": "int", "Pk": "2", + "PkMySql": "1", "PkHistory": "2", + "PkHistoryMySql": "1", "Identity": "1", "Seed": "1", "Like": "1", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_AddHeader.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_AddHeader.json deleted file mode 100644 index c80667eac..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_AddHeader.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "Id": "ExportSettings_AddHeader", - "ModelName": "ExportSetting", - "TableName": "ExportSettings", - "Label": "エクスポート設定", - "ColumnName": "AddHeader", - "LabelText": "ヘッダを追加", - "No": "101", - "History": "101", - "EditorColumn": "101", - "EditorEnabled": "1", - "LinkColumn": "101", - "HistoryColumn": "101", - "TypeName": "bit", - "Default": "1", - "Session": "1", - "LabelText_en": "Add header", - "LabelText_zh": "添加标题", - "LabelText_de": "Kopfzeile hinzufügen", - "LabelText_ko": "헤더 추가", - "LabelText_es": "Añadir encabezado", - "LabelText_vn": "Thêm tiêu đề" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ExportColumns.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ExportColumns.json deleted file mode 100644 index 337d38621..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ExportColumns.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "Id": "ExportSettings_ExportColumns", - "ModelName": "ExportSetting", - "TableName": "ExportSettings", - "Label": "エクスポート設定", - "ColumnName": "ExportColumns", - "LabelText": "内容", - "No": "102", - "History": "102", - "LinkColumn": "102", - "HistoryColumn": "102", - "TypeName": "nvarchar", - "TypeCs": "ExportColumns", - "RecordingData": ".ToJson()", - "MaxLength": "-1", - "Required": "1", - "NotForm": "1", - "ByDataRow": "dataRow[column.ColumnName].ToString().Deserialize() ?? new ExportColumns(ReferenceType)", - "BySession": "context.SessionData.Get(\"ExportColumns\")?.ToString().Deserialize() ?? new ExportColumns(ReferenceType)", - "Session": "1", - "LabelText_en": "Body", - "LabelText_zh": "主体", - "LabelText_de": "Text", - "LabelText_ko": "본문", - "LabelText_es": "Cuerpo", - "LabelText_vn": "Nội dung" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ExportSettingId.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ExportSettingId.json deleted file mode 100644 index fd88601b0..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ExportSettingId.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "Id": "ExportSettings_ExportSettingId", - "ModelName": "ExportSetting", - "TableName": "ExportSettings", - "Label": "エクスポート設定", - "ColumnName": "ExportSettingId", - "LabelText": "選択肢", - "No": "4", - "History": "4", - "EditorColumn": "4", - "EditorEnabled": "1", - "LinkColumn": "4", - "HistoryColumn": "4", - "TypeName": "bigint", - "Pk": "4", - "PkHistory": "4", - "Ix1": "1", - "Identity": "1", - "Seed": "1", - "Required": "1", - "ControlType": "Id", - "EditorReadOnly": "1", - "LabelText_en": "Options", - "LabelText_zh": "选项", - "LabelText_de": "Optionen", - "LabelText_ko": "옵션", - "LabelText_es": "Opciones", - "LabelText_vn": "Các lựa chọn" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ReferenceId.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ReferenceId.json deleted file mode 100644 index b2f56d135..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ReferenceId.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "Id": "ExportSettings_ReferenceId", - "ModelName": "ExportSetting", - "TableName": "ExportSettings", - "Label": "エクスポート設定", - "ColumnName": "ReferenceId", - "LabelText": "参照ID", - "No": "2", - "History": "2", - "EditorColumn": "2", - "EditorEnabled": "1", - "LinkColumn": "2", - "HistoryColumn": "2", - "TypeName": "bigint", - "Pk": "2", - "PkHistory": "2", - "Ix1": "3", - "Required": "1", - "LabelText_en": "Reference ID", - "LabelText_zh": "参考ID", - "LabelText_de": "Referenz-ID", - "LabelText_ko": "참조 ID", - "LabelText_es": "ID de referencia", - "LabelText_vn": "ID Tham chiếu" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ReferenceType.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ReferenceType.json deleted file mode 100644 index 1e6939623..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_ReferenceType.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "Id": "ExportSettings_ReferenceType", - "ModelName": "ExportSetting", - "TableName": "ExportSettings", - "Label": "エクスポート設定", - "ColumnName": "ReferenceType", - "LabelText": "参照種別", - "No": "1", - "History": "1", - "EditorColumn": "1", - "EditorEnabled": "1", - "LinkColumn": "1", - "HistoryColumn": "1", - "TypeName": "nvarchar", - "MaxLength": "32", - "Pk": "1", - "PkHistory": "1", - "Ix1": "2", - "Default": "Sites", - "Required": "1", - "LabelText_en": "Reference type", - "LabelText_zh": "参考类型", - "LabelText_de": "Referenztyp", - "LabelText_ko": "참조 유형", - "LabelText_es": "Tipo de referencia", - "LabelText_vn": "Loại tham chiếu" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_Title.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_Title.json deleted file mode 100644 index 9c9e3a911..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/ExportSettings_Title.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "Id": "ExportSettings_Title", - "ModelName": "ExportSetting", - "TableName": "ExportSettings", - "Label": "エクスポート設定", - "ColumnName": "Title", - "LabelText": "タイトル", - "No": "3", - "History": "3", - "EditorColumn": "3", - "EditorEnabled": "1", - "LinkColumn": "3", - "HistoryColumn": "3", - "TypeName": "nvarchar", - "TypeCs": "Title", - "RecordingData": ".Value", - "MaxLength": "1024", - "Pk": "3", - "PkHistory": "3", - "Ix1": "4", - "Required": "1", - "ByForm": "new Title(#ModelName#Id, value)", - "ByDataRow": "new Title(dataRow, \"#ModelName#Id\")", - "Session": "1", - "LabelText_en": "Title", - "LabelText_zh": "标题", - "LabelText_de": "Titel", - "LabelText_ko": "제목", - "LabelText_es": "Título", - "LabelText_vn": "Tiêu đề" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Groups_GroupId.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Groups_GroupId.json index d4329d6ac..131b9b352 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Groups_GroupId.json +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Groups_GroupId.json @@ -15,7 +15,9 @@ "HistoryColumn": "2", "TypeName": "int", "Pk": "2", + "PkMySql": "1", "PkHistory": "2", + "PkHistoryMySql": "1", "Identity": "1", "Seed": "1", "Like": "1", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/MailAddresses_MailAddressId.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/MailAddresses_MailAddressId.json index 93a9273d8..b2af577a6 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/MailAddresses_MailAddressId.json +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/MailAddresses_MailAddressId.json @@ -13,7 +13,9 @@ "HistoryColumn": "3", "TypeName": "bigint", "Pk": "3", + "PkMySql": "1", "PkHistory": "3", + "PkHistoryMySql": "1", "Identity": "1", "Required": "1", "ControlType": "Id", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/OutgoingMails_OutgoingMailId.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/OutgoingMails_OutgoingMailId.json index 8e2907997..936779d3a 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/OutgoingMails_OutgoingMailId.json +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/OutgoingMails_OutgoingMailId.json @@ -13,8 +13,10 @@ "HistoryColumn": "4", "TypeName": "bigint", "Pk": "4", + "PkMySql": "1", "PkOrderBy": "desc", "PkHistory": "4", + "PkHistoryMySql": "1", "PkHistoryOrderBy": "desc", "Ix1": "1", "Identity": "1", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Registrations_RegistrationId.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Registrations_RegistrationId.json index 25e0c34a5..1ce787193 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Registrations_RegistrationId.json +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Registrations_RegistrationId.json @@ -9,7 +9,9 @@ "History": "2", "TypeName": "int", "Pk": "2", + "PkMySql": "1", "PkHistory": "2", + "PkHistoryMySql": "1", "Identity": "1", "Seed": "1", "Required": "1", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/SysLogs_SysLogId.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/SysLogs_SysLogId.json index b959795e4..54ca2d4d5 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/SysLogs_SysLogId.json +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/SysLogs_SysLogId.json @@ -17,7 +17,9 @@ "HistoryColumn": "2", "TypeName": "bigint", "Pk": "2", + "PkMySql": "1", "PkHistory": "2", + "PkHistoryMySql": "1", "Ix1": "1", "Identity": "1", "Seed": "1", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Users_UserId.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Users_UserId.json index 602b0a45a..aa1471aaf 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Users_UserId.json +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/Users_UserId.json @@ -15,7 +15,9 @@ "HistoryColumn": "2", "TypeName": "int", "Pk": "2", + "PkMySql": "1", "PkHistory": "2", + "PkHistoryMySql": "1", "Ix1": "1", "Ix2": "3", "Ix3": "3", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/_Bases_Ver.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/_Bases_Ver.json index 5c4906dc4..4550ee063 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/_Bases_Ver.json +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/_Bases_Ver.json @@ -17,6 +17,7 @@ "HistoryEnabled": "1", "TypeName": "int", "PkHistory": "3", + "PkHistoryMySql": "3", "Default": "1", "Required": "1", "CreateAccessControl": "ManageService", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/__ColumnSettings.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/__ColumnSettings.json index 48e986cb4..b06458a1d 100644 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Column/__ColumnSettings.json +++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Column/__ColumnSettings.json @@ -30,8 +30,10 @@ "MaxLength": "int", "Size": "string", "Pk": "int", + "PkMySql": "int", "PkOrderBy": "string", "PkHistory": "int", + "PkHistoryMySql": "int", "PkHistoryOrderBy": "string", "Ix1": "int", "Ix1OrderBy": "string", diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BeginTransaction.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BeginTransaction.json deleted file mode 100644 index fbd823def..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BeginTransaction.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Id": "BeginTransaction" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BeginTransaction_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BeginTransaction_Body.txt deleted file mode 100644 index f04a4a32f..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BeginTransaction_Body.txt +++ /dev/null @@ -1,2 +0,0 @@ -set xact_abort on; -begin transaction; diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BulkInsert.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BulkInsert.json deleted file mode 100644 index 55c455a3a..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BulkInsert.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Id": "BulkInsert" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BulkInsert_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BulkInsert_Body.txt deleted file mode 100644 index 750a2c5a0..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/BulkInsert_Body.txt +++ /dev/null @@ -1 +0,0 @@ -bulk insert {0} from '{1}' with (FIELDTERMINATOR = '\t'); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/CommitTransaction.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/CommitTransaction.json deleted file mode 100644 index 34d7c1240..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/CommitTransaction.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Id": "CommitTransaction" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/CommitTransaction_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/CommitTransaction_Body.txt deleted file mode 100644 index b2dda894b..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/CommitTransaction_Body.txt +++ /dev/null @@ -1 +0,0 @@ -commit transaction; diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/DeleteDefault.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/DeleteDefault.json deleted file mode 100644 index 0027bfd8b..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/DeleteDefault.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Id": "DeleteDefault" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/DeleteDefault_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/DeleteDefault_Body.txt deleted file mode 100644 index 0bc80c408..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/DeleteDefault_Body.txt +++ /dev/null @@ -1,13 +0,0 @@ -declare df cursor for -select name from sys.default_constraints -where parent_object_id = -(select object_id from sys.tables where name = '#TableName#'); -open df; -fetch next from df into @target -while(@@fetch_status = 0) -begin - exec(N'alter table "#TableName#" drop constraint "' + @target + '"'); - fetch next from df into @target; -end; -close df; -deallocate df; diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/IfConflicted.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/IfConflicted.json deleted file mode 100644 index 41593a5ea..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/IfConflicted.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Id": "IfConflicted" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/IfConflicted_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/IfConflicted_Body.txt deleted file mode 100644 index 082b8966a..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/IfConflicted_Body.txt +++ /dev/null @@ -1,11 +0,0 @@ -set @_C = @@rowcount; -if @_C = 0 -begin - rollback; - select '{{"Event":"Conflicted","Id":{0},"Count":' + convert(nvarchar,@_C) + '}}'; - return; -end -else -begin - select '{{"Id":{0},"Count":' + convert(nvarchar,@_C) + '}}'; -end diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginAdmin.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginAdmin.json deleted file mode 100644 index 00adfb471..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginAdmin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Id": "RecreateLoginAdmin" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginAdmin_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginAdmin_Body.txt deleted file mode 100644 index c72f09af1..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginAdmin_Body.txt +++ /dev/null @@ -1,13 +0,0 @@ -if exists(select * from syslogins where name='#Uid#') -begin - drop login "#Uid#"; -end; -create login "#Uid#" with password='#Pwd#', default_database="#ServiceName#", check_expiration=off, check_policy=off; -alter login "#Uid#" enable; -use "#ServiceName#"; -if exists(select * from sysusers where name='#Uid#') -begin - drop user "#Uid#"; -end; -create user "#Uid#" for login "#Uid#"; -alter role "db_owner" add member "#Uid#"; diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginUser.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginUser.json deleted file mode 100644 index 5c66c929e..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginUser.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Id": "RecreateLoginUser" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginUser_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginUser_Body.txt deleted file mode 100644 index 9c93f6625..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/RecreateLoginUser_Body.txt +++ /dev/null @@ -1,14 +0,0 @@ -if exists(select * from syslogins where name='#Uid#') -begin - drop login "#Uid#"; -end; -create login "#Uid#" with password='#Pwd#', default_database="#ServiceName#", check_expiration=off, check_policy=off; -alter login "#Uid#" enable; -use "#ServiceName#"; -if exists(select * from sysusers where name='#Uid#') -begin - drop user "#Uid#"; -end; -create user "#Uid#" for login "#Uid#"; -alter role "db_datareader" add member "#Uid#"; -alter role "db_datawriter" add member "#Uid#"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/SiteDepts.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/SiteDepts.json deleted file mode 100644 index 41263dc3e..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/SiteDepts.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Id": "SiteDepts" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/SiteDepts_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/SiteDepts_Body.txt deleted file mode 100644 index fa055403c..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/SiteDepts_Body.txt +++ /dev/null @@ -1,7 +0,0 @@ -select "Depts"."DeptId", "Depts"."DeptName" -from "Depts" -where "Depts"."DeptId" in -( - select "Permissions"."DeptId" from "Permissions" - where "Permissions"."ReferenceType" = @ReferenceType_ and "Permissions"."ReferenceId" = @ReferenceId_ and DeptId > 0 -); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/TruncateTemplate.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/TruncateTemplate.json deleted file mode 100644 index 642d08c11..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/TruncateTemplate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Id": "TruncateTemplate" -} \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/TruncateTemplate_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/TruncateTemplate_Body.txt deleted file mode 100644 index 4445ba664..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Definition_Sql/TruncateTemplate_Body.txt +++ /dev/null @@ -1 +0,0 @@ -truncate table "Templates"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/AdGroupDeleteToDisable.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/AdGroupDeleteToDisable.sql new file mode 100644 index 000000000..3802a32d0 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/AdGroupDeleteToDisable.sql @@ -0,0 +1,6 @@ +update "Groups" +set "Disabled" = 1, "Updator" = @ipU, "UpdatedTime" = current_timestamp(3) +where ("TenantId" = @ipT) + and ("Disabled" = false) + and ("SynchronizedTime" is not null) + and ("SynchronizedTime" <> @SynchronizedTime#CommandCount#); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/AlterLoginRole.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/AlterLoginRole.sql new file mode 100644 index 000000000..acfedf256 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/AlterLoginRole.sql @@ -0,0 +1 @@ +alter user "#Uid#"@"localhost" identified by '#Pwd#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CanRead.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CanRead.sql new file mode 100644 index 000000000..554ecb716 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CanRead.sql @@ -0,0 +1,63 @@ +"Sites"."TenantId"=@ipT +and +( + exists + ( + select * + from "Permissions" + where "Permissions"."ReferenceId" in + ( + "InheritPermission","Items"."ReferenceId" + ) + and "Permissions"."PermissionType" & 1=1 + and + ( + exists + ( + select * from "Depts" + where "Depts"."TenantId"=@ipT + and "Depts"."DeptId"=@ipD + and "Depts"."Disabled"=0 + and "Permissions"."DeptId"="Depts"."DeptId" + and @ipD<>0 + ) + or + ( + exists + ( + select * + from "GroupMembers" inner join "Groups" on "GroupMembers"."GroupId"="Groups"."GroupId" + where "Groups"."TenantId"=@ipT + and "Groups"."Disabled"=0 + and "Permissions"."GroupId"="GroupMembers"."GroupId" + and + ( + exists + ( + select * from "Depts" + where "Depts"."TenantId"=@ipT + and "Depts"."DeptId"=@ipD + and "Depts"."Disabled"=0 + and "GroupMembers"."DeptId"="Depts"."DeptId" + and @ipD<>0 + ) + or + ( + "GroupMembers"."UserId"=@ipU + and @ipU<>0 + ) + ) + ) + ) + or + ( + "Permissions"."UserId"=@ipU + and @ipU<>0 + ) + or + ( + "Permissions"."UserId"=-1 + ) + ) + ) +) \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CanReadSites.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CanReadSites.sql new file mode 100644 index 000000000..d2628ff63 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CanReadSites.sql @@ -0,0 +1,58 @@ +( + exists + ( + select * + from "Permissions" + where "Permissions"."ReferenceId"="InheritPermission" + and "Permissions"."PermissionType" & 1=1 + and + ( + exists + ( + select * from "Depts" + where "Depts"."TenantId"=@ipT + and "Depts"."DeptId"=@ipD + and "Depts"."Disabled"=0 + and "Permissions"."DeptId"="Depts"."DeptId" + and @ipD<>0 + ) + or + ( + exists + ( + select * + from "Groups" inner join "GroupMembers" on "Groups"."GroupId"="GroupMembers"."GroupId" + where "Groups"."TenantId"=@ipT + and "Groups"."Disabled"=0 + and "Permissions"."GroupId"="Groups"."GroupId" + and + ( + exists + ( + select * from "Depts" + where "Depts"."TenantId"=@ipT + and "Depts"."DeptId"=@ipD + and "Depts"."Disabled"=0 + and "GroupMembers"."DeptId"="Depts"."DeptId" + and @ipD<>0 + ) + or + ( + "GroupMembers"."UserId"=@ipU + and @ipU<>0 + ) + ) + ) + ) + or + ( + "Permissions"."UserId"=@ipU + and @ipU<>0 + ) + or + ( + "Permissions"."UserId"=-1 + ) + ) + ) +) \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ChangeDatabaseOwnerForPostgres.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ChangeDatabaseOwnerForPostgres.sql new file mode 100644 index 000000000..965aeded3 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ChangeDatabaseOwnerForPostgres.sql @@ -0,0 +1 @@ +select 1 as dummy; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Columns.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Columns.sql new file mode 100644 index 000000000..697cfcb48 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Columns.sql @@ -0,0 +1,33 @@ +select + "cl"."table_name" as "name", + "cl"."column_name" as "ColumnName", + "cl"."data_type" as "TypeName", + case + when "cl"."data_type" in ('char', 'varchar') then "cl"."character_octet_length" + else 0 + end as "max_length", + case + when "cl"."data_type" = 'decimal' then concat("cl"."numeric_precision",',',"cl"."numeric_scale") + else '0,0' + end as "Size", + case + when "cl"."is_nullable" = 'YES' then 1 + else 0 + end as "is_nullable", + case + when "cl"."column_name" = "tmp_identity_info"."column_name" then 1 + else 0 + end as "is_identity" +from + "information_schema"."columns" as "cl" +left outer join + (select "tmp_auto_increment"."table_name", "tmp_pk"."column_name" + from + (select "table_name" from "information_schema"."tables" where "table_schema" = '#InitialCatalog#' and "auto_increment" is not null) as "tmp_auto_increment" + inner join + (select "table_name", "column_name" from "information_schema"."statistics" where "table_schema" = '#InitialCatalog#' and index_name = 'primary' and seq_in_index = 1) as "tmp_pk" + where "tmp_auto_increment"."table_name" = "tmp_pk"."table_name") as "tmp_identity_info" +on "cl"."table_name" = "tmp_identity_info"."table_name" +where "cl"."table_schema" = '#InitialCatalog#' +and "cl"."table_name" = '#TableName#' +order by "cl"."table_name", "cl"."ordinal_position"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CompletionTimeColumn.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CompletionTimeColumn.sql new file mode 100644 index 000000000..c535dd82d --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CompletionTimeColumn.sql @@ -0,0 +1 @@ +date_add("Issues"."CompletionTime",interval #DifferenceOfDates# day) \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateDatabase.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateDatabase.sql new file mode 100644 index 000000000..3372506e9 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateDatabase.sql @@ -0,0 +1 @@ +create database "#InitialCatalog#" collate utf8mb4_general_ci; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateDatabaseForPostgres.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateDatabaseForPostgres.sql new file mode 100644 index 000000000..302a9dd60 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateDatabaseForPostgres.sql @@ -0,0 +1 @@ +select 1 as dummy; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/CreateLoginRole.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateDefault.sql similarity index 100% rename from Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/CreateLoginRole.sql rename to Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateDefault.sql diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateFullText.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateFullText.sql new file mode 100644 index 000000000..6ffcd5b2e --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateFullText.sql @@ -0,0 +1 @@ +create fulltext index "ftx" on "Items"("fulltext") with parser "ngram"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateIx.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateIx.sql new file mode 100644 index 000000000..1ffecde2d --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateIx.sql @@ -0,0 +1 @@ +create #Unique# index "#IxName#" on "#TableName#" (#IxColumns#); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateLoginAdmin.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateLoginAdmin.sql new file mode 100644 index 000000000..9195cf6be --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateLoginAdmin.sql @@ -0,0 +1,2 @@ +create user "#Uid#"@"localhost" identified by '#Pwd#'; +grant all on "#ServiceName#".* to "#Uid#"@"localhost" with grant option; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateLoginUser.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateLoginUser.sql new file mode 100644 index 000000000..e9a0fb144 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateLoginUser.sql @@ -0,0 +1 @@ +create user "#Uid#"@"localhost" identified by '#Pwd#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreatePk.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreatePk.sql new file mode 100644 index 000000000..a9af3cb5c --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreatePk.sql @@ -0,0 +1 @@ +alter table "#TableName#" add constraint primary key (#PkColumns#); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateSchema.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateSchema.sql new file mode 100644 index 000000000..965aeded3 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateSchema.sql @@ -0,0 +1 @@ +select 1 as dummy; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateTable.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateTable.sql new file mode 100644 index 000000000..3bb223dc6 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateTable.sql @@ -0,0 +1,7 @@ +#DropConstraint# + create table "#TableName#" + ( +#Columns# + ); +#Pks# +#ModifyColumn# \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateUserForPostgres.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateUserForPostgres.sql new file mode 100644 index 000000000..302a9dd60 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/CreateUserForPostgres.sql @@ -0,0 +1 @@ +select 1 as dummy; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Defaults.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Defaults.sql new file mode 100644 index 000000000..3a3a6e39a --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Defaults.sql @@ -0,0 +1,5 @@ +select "table_name", "column_name", "column_default", "data_type" +from "information_schema"."columns" +where "table_schema" = '#InitialCatalog#' +and "table_name" = '#TableName#' +and "column_default" is not null; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/DropLoginRole.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/DropConstraint.sql similarity index 100% rename from Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/DropLoginRole.sql rename to Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/DropConstraint.sql diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/DropIndex.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/DropIndex.sql new file mode 100644 index 000000000..7fd476ca6 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/DropIndex.sql @@ -0,0 +1 @@ +drop index "#IndexName#" on "#SourceTableName#"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsDatabase.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsDatabase.sql new file mode 100644 index 000000000..772cad4e0 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsDatabase.sql @@ -0,0 +1 @@ +show databases where "database" = '#InitialCatalog#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsFullText.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsFullText.sql new file mode 100644 index 000000000..e1d3282e5 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsFullText.sql @@ -0,0 +1,5 @@ +select "index_name" +from "information_schema"."statistics" +where "table_schema" = '#InitialCatalog#' +and "table_name" = 'Items' +and "index_name" = 'ftx'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsSchema.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsSchema.sql new file mode 100644 index 000000000..965aeded3 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsSchema.sql @@ -0,0 +1 @@ +select 1 as dummy; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsTable.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsTable.sql new file mode 100644 index 000000000..36db125e3 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsTable.sql @@ -0,0 +1,3 @@ +select "table_name" +from "information_schema"."tables" +where "table_schema" = '#InitialCatalog#' and "table_name" = '#TableName#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsUser.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsUser.sql new file mode 100644 index 000000000..a27c1fdc5 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ExistsUser.sql @@ -0,0 +1 @@ +select "user" from "mysql"."user" where "user" = '#Uid#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GetGroupChildrenIds.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GetGroupChildrenIds.sql new file mode 100644 index 000000000..b0fbaa07e --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GetGroupChildrenIds.sql @@ -0,0 +1,34 @@ +with recursive "GroupsChildIsNotInSelfId"("Lv", "GroupId", "ChildId", "Disabled") as ( + -- 子GroupIdリスト(自ID含まない) + select + 1 as "Lv" + ,"t2"."GroupId" + ,"t2"."ChildId" + ,"t3"."Disabled" + from + "GroupChildren" as "t2" + inner join "Groups" as "t3" on "t2"."GroupId" = "t3"."GroupId" + where "t3"."TenantId" = @ipT + and "t2"."GroupId" in ({{GroupsStartIdP}}) + union all + select + "t1"."Lv" + 1 + ,"t2"."GroupId" + ,"t2"."ChildId" + ,"t3"."Disabled" + from + "GroupsChildIsNotInSelfId" as "t1" + ,"GroupChildren" as "t2" + inner join "Groups" as "t3" on "t2"."GroupId" = "t3"."GroupId" + where "t3"."TenantId" = @ipT + and "t1"."Lv" < @GroupsDepthMax + and "t3"."Disabled" = 0 + and "t1"."ChildId" = "t2"."GroupId" +) +select + distinct + "ChildId" as "GroupId" +from + "GroupsChildIsNotInSelfId" +order by + "GroupId"; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GetGroupParentIds.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GetGroupParentIds.sql new file mode 100644 index 000000000..f3b7dc0b8 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GetGroupParentIds.sql @@ -0,0 +1,34 @@ +with recursive "GroupsParentIdsNotInSelfId"("Lv", "GroupId", "ChildId", "Disabled") as ( + -- 親GroupIdリスト(自ID含む) + select + 1 as "Lv" + ,"t2"."GroupId" + ,"t2"."ChildId" + ,"t3"."Disabled" + from + "GroupChildren" as "t2" + inner join "Groups" as "t3" on "t2"."GroupId" = "t3"."GroupId" + where "t3"."TenantId" = @ipT + and "t2"."ChildId" in ({{GroupsStartIdP}}) + union all + select + "t1"."Lv" + 1 + ,"t2"."GroupId" + ,"t2"."ChildId" + ,"t3"."Disabled" + from + "GroupsParentIdsNotInSelfId" as "t1" + ,"GroupChildren" as "t2" + inner join "Groups" as "t3" on "t2"."GroupId" = "t3"."GroupId" + where "t3"."TenantId" = @ipT + and "t1"."Lv" < @GroupsDepthMax + and "t3"."Disabled" = 0 + and "t1"."GroupId" = "t2"."ChildId" +) +select + distinct + "GroupId" +from + "GroupsParentIdsNotInSelfId" +order by + "GroupId"; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GrantDatabaseForPostgres.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GrantDatabaseForPostgres.sql new file mode 100644 index 000000000..965aeded3 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GrantDatabaseForPostgres.sql @@ -0,0 +1 @@ +select 1 as dummy; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GrantPrivilegeAdmin.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GrantPrivilegeAdmin.sql new file mode 100644 index 000000000..6afe5e53e --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GrantPrivilegeAdmin.sql @@ -0,0 +1 @@ +grant all on "#ServiceName#".* to "#Uid#"@"localhost" with grant option; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GrantPrivilegeUser.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GrantPrivilegeUser.sql new file mode 100644 index 000000000..fc0b9e184 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/GrantPrivilegeUser.sql @@ -0,0 +1 @@ +grant select, insert, update, delete, create routine, alter routine on "#ServiceName#".* to "#Uid#"@"localhost"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/HasPermission.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/HasPermission.sql new file mode 100644 index 000000000..5cf8aac9f --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/HasPermission.sql @@ -0,0 +1,56 @@ +( + exists + ( + select * + from "Permissions" + where "Permissions"."ReferenceId"="InheritPermission" and + ( + exists + ( + select * from "Depts" + where "Depts"."TenantId"=@ipT + and "Depts"."DeptId"=@ipD + and "Depts"."Disabled"=0 + and "Permissions"."DeptId"="Depts"."DeptId" + and @ipD<>0 + ) + or + ( + exists + ( + select * + from "Groups" inner join "GroupMembers" on "Groups"."GroupId"="GroupMembers"."GroupId" + where "Groups"."TenantId"=@ipT + and "Groups"."Disabled"=0 + and "Permissions"."GroupId"="Groups"."GroupId" + and + ( + exists + ( + select * from "Depts" + where "Depts"."TenantId"=@ipT + and "Depts"."DeptId"=@ipD + and "Depts"."Disabled"=0 + and "GroupMembers"."DeptId"="Depts"."DeptId" + and @ipD<>0 + ) + or + ( + "GroupMembers"."UserId"=@ipU + and @ipU<>0 + ) + ) + ) + ) + or + ( + "Permissions"."UserId"=@ipU + and @ipU<>0 + ) + or + ( + "Permissions"."UserId"=-1 + ) + ) + ) +) \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Identity.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Identity.sql new file mode 100644 index 000000000..efd71fac5 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Identity.sql @@ -0,0 +1 @@ +@ipI \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/IfDuplicated.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/IfDuplicated.sql new file mode 100644 index 000000000..931fbf98d --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/IfDuplicated.sql @@ -0,0 +1 @@ +select 1 from "{0}" where "{0}"."SiteId"={1} and "{0}"."{4}"=@{4}_#CommandCount# and "{0}"."{2}"<>{3}; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Indexes.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Indexes.sql new file mode 100644 index 000000000..6edfcf134 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Indexes.sql @@ -0,0 +1,11 @@ +select + "index_name" as "Name", + "column_name" as "ColumnName", + "seq_in_index" as "No", + case + when "collation" = 'A' then 'asc' + when "collation" = 'D' then 'desc' + else '' + end as "OrderType" +from "information_schema"."statistics" +where "table_schema" = '#InitialCatalog#' and "table_name" = '#TableName#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/KillSpid.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/KillSpid.sql new file mode 100644 index 000000000..bd7edfab1 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/KillSpid.sql @@ -0,0 +1 @@ +kill #Spid#; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/LdapUpdateGroupMembersAndChildren.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/LdapUpdateGroupMembersAndChildren.sql new file mode 100644 index 000000000..e66e46a88 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/LdapUpdateGroupMembersAndChildren.sql @@ -0,0 +1,54 @@ +drop procedure if exists "LdapUpdateGroupMembersAndChildren"; +create procedure "LdapUpdateGroupMembersAndChildren"( + in v_tenantid int + ,in v_ldap_object_guid text charset utf8mb4 collate utf8mb4_general_ci + ,in v_is_member_insert boolean + ,in v_is_child_insert boolean + ,in v_is_first_time boolean + ,in v_ipu int +) +begin + declare v_group_id int; + select + "GroupId" into v_group_id + from + "Groups" as "t1" + where "t1"."TenantId" = v_tenantid + and "t1"."LdapGuid" = v_ldap_object_guid; + if v_is_first_time = true then + delete from + "GroupMembers" + where + "GroupId" = v_group_id; + end if; + if v_is_member_insert = true then + insert into + "GroupMembers" ("GroupId","UserId","Creator","Updator") + select v_group_id, "t3"."UserId", v_ipu, v_ipu + from "Users" as "t3" + where "t3"."TenantId" = v_tenantid + and {{userLoginIds_condition}}; + end if; + if v_is_first_time = true then + delete from + "GroupChildren" + where + "GroupId" = v_group_id; + end if; + if v_is_child_insert = true then + insert into + "GroupChildren" ("GroupId","ChildId","Creator","Updator") + select v_group_id, "t5"."GroupId", v_ipu, v_ipu + from "Groups" as "t5" + where "t5"."TenantId" = v_tenantid + and {{groupGuids_condition}}; + end if; +end; +call LdapUpdateGroupMembersAndChildren( + @TenantId#CommandCount#, + @LdapObjectGUID#CommandCount#, + @isMemberInsert#CommandCount#, + @isChildInsert#CommandCount#, + @isFirstTime#CommandCount#, + @ipU); +drop procedure "LdapUpdateGroupMembersAndChildren"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/MigrateTable.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/MigrateTable.sql new file mode 100644 index 000000000..125c1d73c --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/MigrateTable.sql @@ -0,0 +1,3 @@ +insert into "#DestinationTableName#"(#DestinationColumnCollection#) select #SourceColumnCollection# from "#SourceTableName#"; +alter table "#SourceTableName#" rename to "_Migrated_#DestinationTableName#"; +alter table "#DestinationTableName#" rename to "#SourceTableName#"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/MigrateTableWithIdentity.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/MigrateTableWithIdentity.sql new file mode 100644 index 000000000..125c1d73c --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/MigrateTableWithIdentity.sql @@ -0,0 +1,3 @@ +insert into "#DestinationTableName#"(#DestinationColumnCollection#) select #SourceColumnCollection# from "#SourceTableName#"; +alter table "#SourceTableName#" rename to "_Migrated_#DestinationTableName#"; +alter table "#DestinationTableName#" rename to "#SourceTableName#"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ModifyColumn.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ModifyColumn.sql new file mode 100644 index 000000000..0fdc4691a --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ModifyColumn.sql @@ -0,0 +1 @@ +alter table "#TableName#" modify column #ColumnDefinition##Default##AutoIncrement#;#SetSeed# \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/MoveTarget.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/MoveTarget.sql new file mode 100644 index 000000000..db62ebf11 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/MoveTarget.sql @@ -0,0 +1,100 @@ +with RECURSIVE "CTE"( + "SiteId", + "ParentId", + "ReferenceType", + "Title", + "Lv") as +( + select + "Sites"."SiteId", + "Sites"."ParentId", + "Sites"."ReferenceType", + "Sites"."Title", + 1 + from + "Sites" inner join "Permissions" on + "Sites"."InheritPermission" = "Permissions"."ReferenceId" + where + "Sites"."TenantId" = @TenantId_ and + "Sites"."ReferenceType" = @ReferenceType_ and + "Sites"."SiteId" <> @SiteId_ and + ( + @HasPrivilege_ = true + or + ( + exists + ( + select * from "Permissions" + where "Permissions"."ReferenceId"="InheritPermission" + and "Permissions"."PermissionType" & 4=4 + and + ( + exists + ( + select * from "Depts" + where "Depts"."TenantId"=@ipT + and "Depts"."DeptId"=@ipD + and "Depts"."Disabled"=0 + and "Permissions"."DeptId"="Depts"."DeptId" + and @ipD<>0 + ) + or + ( + exists + ( + select * + from "GroupMembers" inner join "Groups" on "GroupMembers"."GroupId"="Groups"."GroupId" + where "Groups"."TenantId"=@ipT + and "Groups"."Disabled"=0 + and "Permissions"."GroupId"="GroupMembers"."GroupId" + and + ( + exists + ( + select * from "Depts" + where "Depts"."TenantId"=@ipT + and "Depts"."DeptId"=@ipD + and "Depts"."Disabled"=0 + and "GroupMembers"."DeptId"="Depts"."DeptId" + and @ipD<>0 + ) + or + ( + "GroupMembers"."UserId"=@ipU + and @ipU<>0 + ) + ) + + ) + ) + or + ( + ( + "Permissions"."UserId"=@ipU + or "Permissions"."UserId"=-1 + ) + and @ipU<>0 + ) + ) + ) + ) + ) + union all + select + "t1"."SiteId", + "t1"."ParentId", + "t1"."ReferenceType", + "t1"."Title", + "CTE"."Lv" + 1 + from + "Sites" as "t1" inner join "CTE" on + "t1"."SiteId" = "CTE"."ParentId" +) +select distinct + "CTE"."SiteId", + "CTE"."ParentId", + "CTE"."ReferenceType", + "CTE"."Title" +from "CTE" +where + "CTE"."ReferenceType" <> 'Wikis'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ProgressRateDelay.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ProgressRateDelay.sql new file mode 100644 index 000000000..5e430185c --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/ProgressRateDelay.sql @@ -0,0 +1,25 @@ +( + case + when #TableBracket#."CompletionTime" < current_timestamp(3) then + 100 + else + case + when #TableBracket#."StartTime" is null then + case + when timediff(#TableBracket#."CreatedTime", #TableBracket#."CompletionTime") <> 0 then + cast(timediff(#TableBracket#."CreatedTime", current_timestamp(3)) as float) / + cast(timediff(#TableBracket#."CreatedTime", #TableBracket#."CompletionTime") as float) * 100 + else + 0 + end + else + case + when timediff(#TableBracket#."StartTime", #TableBracket#."CompletionTime") <> 0 then + cast(timediff(#TableBracket#."StartTime", current_timestamp(3)) as float) / + cast(timediff(#TableBracket#."StartTime", #TableBracket#."CompletionTime") as float) * 100 + else + 0 + end + end + end +) \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/RefreshAllChildMembers.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/RefreshAllChildMembers.sql new file mode 100644 index 000000000..12eb58a74 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/RefreshAllChildMembers.sql @@ -0,0 +1,87 @@ +drop procedure if exists "refresh_all_member"; +create procedure "refresh_all_member"( + in "v_tenantid" int + ,in "v_depth_max" int + ,in "v_ipu" int) +begin + declare done int default 0; + declare v_groupid int; + declare v_row_cnt int; + declare cur cursor for + select "GroupId" + from "Groups" + where "TenantId" = v_tenantid + and ({{groupid_search_condition}}); + declare continue handler for not found set done = 1; + open cur; + read_loop: loop + fetch cur into v_groupid; + if done = 1 then + leave read_loop; + end if; + delete from "GroupMembers" + where "GroupId" = v_groupid + and "ChildGroup" = 1; + insert + into "GroupMembers" ( + "GroupId" + ,"DeptId" + ,"UserId" + ,"ChildGroup" + ,"Creator" + ,"Updator" + ) + ( + with recursive "GroupsChildIsNotInSelfId" ("Lv", "GroupId", "ChildId") as ( + select + 1 as "Lv" + ,"t2"."GroupId" + ,"t2"."ChildId" + from + "GroupChildren" as "t2" + inner join "Groups" as "t3" on "t2"."GroupId"="t3"."GroupId" + where "t3"."TenantId" = v_tenantid + and "t3"."Disabled" = 0 + and "t2"."GroupId" = v_groupid + union all + select + "t1"."Lv" + 1 as "Lv" + ,"t2"."GroupId" + ,"t2"."ChildId" + from + "GroupsChildIsNotInSelfId" as "t1" + ,"GroupChildren" as "t2" + inner join "Groups" as "t3" on "t2"."GroupId"="t3"."GroupId" + where "t3"."TenantId" = v_tenantid + and "t1"."Lv" < v_depth_max + and "t3"."Disabled" = 0 + and "t1"."ChildId" = "t2"."GroupId" + ) + select + distinct + v_groupid as "GroupId" + ,"DeptId" + ,"UserId" + ,1 as "ChildGroup" + ,v_ipU as "Creator" + ,v_ipU as "Updator" + from + "GroupMembers" as "t4" + where + "t4"."ChildGroup" = 0 + and "t4"."GroupId" in ( + select "GroupId" + from "Groups" + where "TenantId" = v_tenantid + and "Disabled" = 0 + and "GroupId" in (select "ChildId" from "GroupsChildIsNotInSelfId") + ) + ); + end loop; + close cur; +end; +call refresh_all_member( + @TenantId#CommandCount# + ,@GroupsDepthMax#CommandCount# + ,@ipU); +drop procedure "refresh_all_member"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectIdentity.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectIdentity.sql new file mode 100644 index 000000000..c4b95587b --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectIdentity.sql @@ -0,0 +1 @@ +select concat('{{"DataTableName":"{0}","Id":',last_insert_id(),'}}'); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectPkName.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectPkName.sql new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectPkName.sql @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectSelectableGroupChildren.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectSelectableGroupChildren.sql new file mode 100644 index 000000000..7e7ce0479 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectSelectableGroupChildren.sql @@ -0,0 +1,35 @@ +select + * +from( + select + "Groups"."GroupId" + ,"Groups"."GroupName" + from "Groups" as "Groups" + where + "Groups"."TenantId" = @TenantId + -- 自分自身は含めない + and "Groups"."GroupId" <> @GroupId + -- グループメンバーに含まれる組織は含めない + and "Groups"."GroupId" not in + ( + select + "GroupChildren"."ChildId" + from + "GroupChildren" as "GroupChildren" + where + "GroupChildren"."GroupId"=@GroupId + -- 削除メンバーを除く + {0} + ) + -- 追加したメンバーは含めない + {1} + and + ( + "Groups"."GroupName" like @SearchText + ) + and "Groups"."Disabled" = 0 +) as "items" +order by + "items"."GroupName" asc + ,"items"."GroupId" asc +limit @PageSize offset @Offset; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectSelectableMembers.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectSelectableMembers.sql new file mode 100644 index 000000000..dfeb8972c --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SelectSelectableMembers.sql @@ -0,0 +1,80 @@ +select + * +from( + select + "Depts"."DeptId" + ,"Depts"."DeptCode" + ,0 as "UserId" + ,'' as "UserCode" + ,0 as "IsUser" + from "Depts" as "Depts" + where + "Depts"."TenantId"=@TenantId + -- グループメンバーに含まれる組織は含めない + and "Depts"."DeptId" not in + ( + select + "GroupMembers"."DeptId" + from + "GroupMembers" as "GroupMembers" + where + ("GroupMembers"."GroupId"=@GroupId) + and ("GroupMembers"."ChildGroup" = 0) + -- 削除メンバーを除く + {0} + ) + -- 追加したメンバーは含めない + {1} + and + ( + "Depts"."DeptCode" like @SearchText + or "Depts"."DeptName" like @SearchText + ) + and "Depts"."Disabled" = 0 + + union + select 0 as "DeptId" + , '' as "DeptCode" + , "Users"."UserId" + , "Users"."UserCode" + , 1 as "IsUser" + from + "Users" as "Users" + left outer join "Depts" + on + "Users"."DeptId" = "Depts"."DeptId" + where + "Users"."TenantId" = @TenantId + -- グループメンバーに含まれるユーザは含めない + and "Users"."UserId" not in + ( + select + "GroupMembers"."UserId" + from + "GroupMembers" as "GroupMembers" + where + ("GroupMembers"."GroupId"=@GroupId) + and ("GroupMembers"."ChildGroup" = 0) + -- 削除メンバーを除く + {2} + ) + -- 追加したメンバーは含めない + {3} + and ( + "Users"."LoginId" like @SearchText + or "Users"."Name" like @SearchText + or "Users"."UserCode" like @SearchText + or "Users"."Body" like @SearchText + or "Depts"."DeptCode" like @SearchText + or "Depts"."DeptName" like @SearchText + or "Depts"."Body" like @SearchText + ) + and "Users"."Disabled"= 0 +) as "items" +order by + "items"."IsUser" asc + ,"items"."DeptCode" asc + ,"items"."DeptId" asc + ,"items"."UserCode" asc + ,"items"."UserId" asc +limit @PageSize offset @Offset; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SpWho.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SpWho.sql new file mode 100644 index 000000000..63c93772a --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/SpWho.sql @@ -0,0 +1 @@ +select id as "spid" from information_schema.processlist where user = '#Uid#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Spaceused.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Spaceused.sql new file mode 100644 index 000000000..99d6100ee --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/Spaceused.sql @@ -0,0 +1,3 @@ +select concat(cast(round((sum(data_length + index_length) /1024 /1024),2) as char),' MB') as "database_size" +from information_schema.tables +where table_schema = '#InitialCatalog#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/StartTimeColumn.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/StartTimeColumn.sql new file mode 100644 index 000000000..c0a52b6dc --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/StartTimeColumn.sql @@ -0,0 +1 @@ +case "Issues"."StartTime" when null then "Issues"."CreatedTime" else "Issues"."StartTime" end \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/UpsertGroupChild.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/UpsertGroupChild.sql new file mode 100644 index 000000000..24d8c0e7f --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/UpsertGroupChild.sql @@ -0,0 +1,30 @@ +update "GroupChildren" +set + "GroupId" = @GroupId + ,"ChildId" = @ChildId + ,"Updator" = @ipU +where "GroupId" = @GroupId + and "ChildId" = @ChildId; +insert into "GroupChildren" +( + "GroupId" + ,"ChildId" + ,"Updator" + ,"Creator" +) +select * from +( + select + @GroupId as "GroupId" + ,@ChildId as "ChildId" + ,@ipU as "Updator" + ,@ipU as "Creator" +) +as tmp +where not exists +( + select 1 + from "GroupChildren" + where "GroupId" = @GroupId + and "ChildId" = @ChildId +); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/UpsertGroupMember.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/UpsertGroupMember.sql new file mode 100644 index 000000000..25e4db5a0 --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/MySQL/UpsertGroupMember.sql @@ -0,0 +1,42 @@ +update "GroupMembers" +set + "GroupId" = @GroupId + ,"DeptId" = @DeptId + ,"UserId" = @UserId + ,"Admin" = @Admin + ,"Updator" = @ipU +where "GroupId" = @GroupId + and "ChildGroup" = 0 + and "DeptId" = @DeptId + and "UserId" = @UserId; +insert into "GroupMembers" +( + "GroupId" + ,"ChildGroup" + ,"DeptId" + ,"UserId" + ,"Admin" + ,"Updator" + ,"Creator" +) +select * from +( + select + @GroupId as "GroupId" + ,0 as "ChildGroup" + ,@DeptId as "DeptId" + ,@UserId as "UserId" + ,@Admin as "Admin" + ,@ipU as "Updator" + ,@ipU as "Creator" +) +as tmp +where not exists +( + select 1 + from "GroupMembers" + where "GroupId"= @GroupId + and "ChildGroup" = 0 + and "DeptId" = @DeptId + and "UserId" = @UserId +); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/BeginTransaction.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/BeginTransaction.sql deleted file mode 100644 index f04a4a32f..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/BeginTransaction.sql +++ /dev/null @@ -1,2 +0,0 @@ -set xact_abort on; -begin transaction; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/BulkInsert.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/BulkInsert.sql deleted file mode 100644 index 750a2c5a0..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/BulkInsert.sql +++ /dev/null @@ -1 +0,0 @@ -bulk insert {0} from '{1}' with (FIELDTERMINATOR = '\t'); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/CommitTransaction.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/CommitTransaction.sql deleted file mode 100644 index b2dda894b..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/CommitTransaction.sql +++ /dev/null @@ -1 +0,0 @@ -commit transaction; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/DeleteDefault.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/DeleteDefault.sql deleted file mode 100644 index 5c6a0984e..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/DeleteDefault.sql +++ /dev/null @@ -1 +0,0 @@ ---alter table "#TableName#" drop constraint "#TableName#"; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/DropUser.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/DropUser.sql deleted file mode 100644 index e910bfa0b..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/DropUser.sql +++ /dev/null @@ -1 +0,0 @@ -drop user "#Uid#"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/ExistsFullText.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/ExistsFullText.sql new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/ExistsFullText.sql @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/ExistsLoginRole.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/ExistsLoginRole.sql deleted file mode 100644 index 43d1bdf36..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/ExistsLoginRole.sql +++ /dev/null @@ -1 +0,0 @@ -select rolname from pg_roles where rolname='#Uid#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/IfConflicted.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/IfConflicted.sql deleted file mode 100644 index f912e5089..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/IfConflicted.sql +++ /dev/null @@ -1,11 +0,0 @@ -set @ipC = @@rowcount; -if @ipC = 0 -begin - rollback; - select '{{"Event":"Conflicted","Id":{0},"Count":' + convert(nvarchar,@ipC) + '}}'; - return; -end -else -begin - select '{{"Id":{0},"Count":' + convert(nvarchar,@ipC) + '}}'; -end diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/ModifyColumn.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/ModifyColumn.sql new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/ModifyColumn.sql @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/RecreateLoginAdmin.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/RecreateLoginAdmin.sql deleted file mode 100644 index c72f09af1..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/RecreateLoginAdmin.sql +++ /dev/null @@ -1,13 +0,0 @@ -if exists(select * from syslogins where name='#Uid#') -begin - drop login "#Uid#"; -end; -create login "#Uid#" with password='#Pwd#', default_database="#ServiceName#", check_expiration=off, check_policy=off; -alter login "#Uid#" enable; -use "#ServiceName#"; -if exists(select * from sysusers where name='#Uid#') -begin - drop user "#Uid#"; -end; -create user "#Uid#" for login "#Uid#"; -alter role "db_owner" add member "#Uid#"; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/RecreateLoginUser.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/RecreateLoginUser.sql deleted file mode 100644 index 9c93f6625..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/RecreateLoginUser.sql +++ /dev/null @@ -1,14 +0,0 @@ -if exists(select * from syslogins where name='#Uid#') -begin - drop login "#Uid#"; -end; -create login "#Uid#" with password='#Pwd#', default_database="#ServiceName#", check_expiration=off, check_policy=off; -alter login "#Uid#" enable; -use "#ServiceName#"; -if exists(select * from sysusers where name='#Uid#') -begin - drop user "#Uid#"; -end; -create user "#Uid#" for login "#Uid#"; -alter role "db_datareader" add member "#Uid#"; -alter role "db_datawriter" add member "#Uid#"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/SiteDepts.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/SiteDepts.sql deleted file mode 100644 index ca78e05bb..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/SiteDepts.sql +++ /dev/null @@ -1,10 +0,0 @@ -select "Depts"."DeptId", "Depts"."DeptName" -from "Depts" -where "Depts"."DeptId" in -( - select "Permissions"."DeptId" - from "Permissions" - where "Permissions"."ReferenceType"=@ReferenceType_ - and "Permissions"."ReferenceId"=@ReferenceId_ - and DeptId > 0 -); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/TruncateTemplate.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/TruncateTemplate.sql deleted file mode 100644 index 4445ba664..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/PostgreSQL/TruncateTemplate.sql +++ /dev/null @@ -1 +0,0 @@ -truncate table "Templates"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/BeginTransaction.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/BeginTransaction.sql deleted file mode 100644 index f04a4a32f..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/BeginTransaction.sql +++ /dev/null @@ -1,2 +0,0 @@ -set xact_abort on; -begin transaction; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/BulkInsert.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/BulkInsert.sql deleted file mode 100644 index 750a2c5a0..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/BulkInsert.sql +++ /dev/null @@ -1 +0,0 @@ -bulk insert {0} from '{1}' with (FIELDTERMINATOR = '\t'); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/CommitTransaction.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/CommitTransaction.sql deleted file mode 100644 index b2dda894b..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/CommitTransaction.sql +++ /dev/null @@ -1 +0,0 @@ -commit transaction; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/CreateLoginRole.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/CreateLoginRole.sql deleted file mode 100644 index 6577fc957..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/CreateLoginRole.sql +++ /dev/null @@ -1,2 +0,0 @@ -create login "#Uid#" with password='#Pwd#', default_database="#ServiceName#", check_expiration=off, check_policy=off; -alter login "#Uid#" enable; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/DeleteDefault.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/DeleteDefault.sql deleted file mode 100644 index 5c6a0984e..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/DeleteDefault.sql +++ /dev/null @@ -1 +0,0 @@ ---alter table "#TableName#" drop constraint "#TableName#"; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/DropLoginRole.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/DropLoginRole.sql deleted file mode 100644 index 2d1add43b..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/DropLoginRole.sql +++ /dev/null @@ -1 +0,0 @@ -drop login "#Uid#"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/DropUser.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/DropUser.sql deleted file mode 100644 index d3fdf68c9..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/DropUser.sql +++ /dev/null @@ -1,2 +0,0 @@ -use "#ServiceName#"; -drop user "#Uid#"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/ExistsFullText.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/ExistsFullText.sql new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/ExistsFullText.sql @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/ExistsLoginRole.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/ExistsLoginRole.sql deleted file mode 100644 index 632ee6943..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/ExistsLoginRole.sql +++ /dev/null @@ -1 +0,0 @@ -select name from syslogins where name='#Uid#'; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/IfConflicted.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/IfConflicted.sql deleted file mode 100644 index 082b8966a..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/IfConflicted.sql +++ /dev/null @@ -1,11 +0,0 @@ -set @_C = @@rowcount; -if @_C = 0 -begin - rollback; - select '{{"Event":"Conflicted","Id":{0},"Count":' + convert(nvarchar,@_C) + '}}'; - return; -end -else -begin - select '{{"Id":{0},"Count":' + convert(nvarchar,@_C) + '}}'; -end diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/ModifyColumn.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/ModifyColumn.sql new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/ModifyColumn.sql @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/RecreateLoginAdmin.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/RecreateLoginAdmin.sql deleted file mode 100644 index c72f09af1..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/RecreateLoginAdmin.sql +++ /dev/null @@ -1,13 +0,0 @@ -if exists(select * from syslogins where name='#Uid#') -begin - drop login "#Uid#"; -end; -create login "#Uid#" with password='#Pwd#', default_database="#ServiceName#", check_expiration=off, check_policy=off; -alter login "#Uid#" enable; -use "#ServiceName#"; -if exists(select * from sysusers where name='#Uid#') -begin - drop user "#Uid#"; -end; -create user "#Uid#" for login "#Uid#"; -alter role "db_owner" add member "#Uid#"; diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/RecreateLoginUser.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/RecreateLoginUser.sql deleted file mode 100644 index 9c93f6625..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/RecreateLoginUser.sql +++ /dev/null @@ -1,14 +0,0 @@ -if exists(select * from syslogins where name='#Uid#') -begin - drop login "#Uid#"; -end; -create login "#Uid#" with password='#Pwd#', default_database="#ServiceName#", check_expiration=off, check_policy=off; -alter login "#Uid#" enable; -use "#ServiceName#"; -if exists(select * from sysusers where name='#Uid#') -begin - drop user "#Uid#"; -end; -create user "#Uid#" for login "#Uid#"; -alter role "db_datareader" add member "#Uid#"; -alter role "db_datawriter" add member "#Uid#"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/SiteDepts.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/SiteDepts.sql deleted file mode 100644 index ca78e05bb..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/SiteDepts.sql +++ /dev/null @@ -1,10 +0,0 @@ -select "Depts"."DeptId", "Depts"."DeptName" -from "Depts" -where "Depts"."DeptId" in -( - select "Permissions"."DeptId" - from "Permissions" - where "Permissions"."ReferenceType"=@ReferenceType_ - and "Permissions"."ReferenceId"=@ReferenceId_ - and DeptId > 0 -); \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/TruncateTemplate.sql b/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/TruncateTemplate.sql deleted file mode 100644 index 4445ba664..000000000 --- a/Implem.Pleasanter/App_Data/Definitions/Sqls/SQLServer/TruncateTemplate.sql +++ /dev/null @@ -1 +0,0 @@ -truncate table "Templates"; \ No newline at end of file diff --git a/Implem.Pleasanter/App_Data/Parameters/General.json b/Implem.Pleasanter/App_Data/Parameters/General.json index 95633b0d8..f4a9297ca 100644 --- a/Implem.Pleasanter/App_Data/Parameters/General.json +++ b/Implem.Pleasanter/App_Data/Parameters/General.json @@ -97,6 +97,7 @@ "HideCurrentUserIcon": false, "HideCurrentDeptIcon": false, "EnableLightBox": true, + "EnableCodeEditor": true, "GroupsDepthMax": 30, - "BulkUpsertMax" : 0 + "BulkUpsertMax": 0 } \ No newline at end of file diff --git a/Implem.Pleasanter/Dockerfile b/Implem.Pleasanter/Dockerfile index 383422971..47f316234 100644 --- a/Implem.Pleasanter/Dockerfile +++ b/Implem.Pleasanter/Dockerfile @@ -21,6 +21,7 @@ COPY ["Implem.Plugins/Implem.Plugins.csproj", "Implem.Plugins/"] COPY ["Implem.Factory/Implem.Factory.csproj", "Implem.Factory/"] COPY ["Rds/Implem.PostgreSql/Implem.PostgreSql.csproj", "Rds/Implem.PostgreSql/"] COPY ["Rds/Implem.SqlServer/Implem.SqlServer.csproj", "Rds/Implem.SqlServer/"] +COPY ["Rds/Implem.MySql/Implem.MySql.csproj", "Rds/Implem.MySql/"] RUN dotnet restore "Implem.Pleasanter/Implem.Pleasanter.csproj" COPY . . WORKDIR "/src/Implem.Pleasanter" diff --git a/Implem.Pleasanter/Implem.Pleasanter.csproj b/Implem.Pleasanter/Implem.Pleasanter.csproj index 8f043fe58..14d9d7186 100644 --- a/Implem.Pleasanter/Implem.Pleasanter.csproj +++ b/Implem.Pleasanter/Implem.Pleasanter.csproj @@ -5,9 +5,9 @@ Copyright © Implem Inc 2014 - 2024 Business application platform Implem.Pleasanter - 1.4.8.1 - 1.4.8.1 - 1.4.8.1 + 1.4.9.0 + 1.4.9.0 + 1.4.9.0 disable Linux ..\docker-compose.dcproj @@ -31,17 +31,18 @@ - + + - - + + - + NU1701 @@ -59,21 +60,21 @@ NU1701 - + NU1701 - + - + - - + + diff --git a/Implem.Pleasanter/Libraries/DataSources/Rds.cs b/Implem.Pleasanter/Libraries/DataSources/Rds.cs index 59eccc38d..368d1a467 100644 --- a/Implem.Pleasanter/Libraries/DataSources/Rds.cs +++ b/Implem.Pleasanter/Libraries/DataSources/Rds.cs @@ -489,17 +489,6 @@ public static SqlStatement DeptsStatement( }; } - public static SqlStatement ExportSettingsStatement( - string commandText, - SqlParamCollection param = null) - { - return new SqlStatement - { - CommandText = commandText, - SqlParamCollection = param - }; - } - public static SqlStatement ExtensionsStatement( string commandText, SqlParamCollection param = null) @@ -1017,28 +1006,6 @@ public static string ColumnBracket(Column column) ? $"\"{column.Name}\"" : null; } - case "ExportSettings": - switch (column.Name) - { - case "ReferenceType": return "\"ReferenceType\""; - case "ReferenceId": return "\"ReferenceId\""; - case "Title": return "\"Title\""; - case "ExportSettingId": return "\"ExportSettingId\""; - case "Ver": return "\"Ver\""; - case "AddHeader": return "\"AddHeader\""; - case "ExportColumns": return "\"ExportColumns\""; - case "Comments": return "\"Comments\""; - case "Creator": return "\"Creator\""; - case "Updator": return "\"Updator\""; - case "CreatedTime": return "\"CreatedTime\""; - case "UpdatedTime": return "\"UpdatedTime\""; - case "VerUp": return "\"VerUp\""; - case "Timestamp": return "\"Timestamp\""; - default: - return Def.ExtendedColumnTypes.ContainsKey(column?.Name ?? string.Empty) - ? $"\"{column.Name}\"" - : null; - } case "Extensions": switch (column.Name) { @@ -2121,91 +2088,6 @@ public static SqlOrderByCollection Add( function: function) : self; } - case "ExportSettings": - switch (column.Name) - { - case "ReferenceType": - return self.ExportSettings_ReferenceType( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "ReferenceId": - return self.ExportSettings_ReferenceId( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "Title": - return self.ExportSettings_Title( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "ExportSettingId": - return self.ExportSettings_ExportSettingId( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "Ver": - return self.ExportSettings_Ver( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "AddHeader": - return self.ExportSettings_AddHeader( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "ExportColumns": - return self.ExportSettings_ExportColumns( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "Comments": - return self.ExportSettings_Comments( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "Creator": - return self.ExportSettings_Creator( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "Updator": - return self.ExportSettings_Updator( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "CreatedTime": - return self.ExportSettings_CreatedTime( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - case "UpdatedTime": - return self.ExportSettings_UpdatedTime( - tableName: column.TableName(), - orderType: orderType, - isNullValue: isNullValue, - function: function); - default: - return Def.ExtendedColumnTypes.ContainsKey(column?.Name ?? string.Empty) - ? self.Add( - columnBracket: $"\"{column.Name}\"", - orderType: orderType, - tableName: column.TableName(), - isNullValue: isNullValue, - function: function) - : self; - } case "Extensions": switch (column.Name) { @@ -5493,48 +5375,6 @@ public static SqlSelect SelectDepts( }; } - public static SqlSelect SelectExportSettings( - string dataTableName = null, - Sqls.TableTypes tableType = Sqls.TableTypes.Normal, - string _as = null, - SqlColumnCollection column = null, - SqlJoinCollection join = null, - SqlWhereCollection where = null, - SqlGroupByCollection groupBy = null, - SqlHavingCollection having = null, - SqlOrderByCollection orderBy = null, - SqlParamCollection param = null, - bool distinct = false, - int top = 0, - int offset = 0, - int pageSize = 0, - Sqls.UnionTypes unionType = Sqls.UnionTypes.None, - bool _using = true) - { - return new SqlSelect - { - DataTableName = dataTableName, - TableType = tableType, - TableBracket = "\"ExportSettings\"", - HistoryTableBracket = "\"ExportSettings_history\"", - DeletedTableBracket = "\"ExportSettings_deleted\"", - As = _as, - SqlColumnCollection = column, - SqlJoinCollection = join, - SqlWhereCollection = where, - SqlGroupByCollection = groupBy, - SqlHavingCollection = having, - SqlOrderByCollection = orderBy, - SqlParamCollection = param, - Distinct = distinct, - Top = top, - Offset = offset, - PageSize = pageSize, - UnionType = unionType, - Using = _using - }; - } - public static SqlSelect SelectExtensions( string dataTableName = null, Sqls.TableTypes tableType = Sqls.TableTypes.Normal, @@ -6581,26 +6421,6 @@ public static SqlExists ExistsDepts( }; } - public static SqlExists ExistsExportSettings( - Sqls.TableTypes tableType = Sqls.TableTypes.Normal, - bool not = false, - SqlJoinCollection join = null, - SqlWhereCollection where = null, - bool _using = true) - { - return new SqlExists - { - TableType = tableType, - Not = not, - TableBracket = "\"ExportSettings\"", - HistoryTableBracket = "\"ExportSettings_history\"", - DeletedTableBracket = "\"ExportSettings_deleted\"", - SqlJoinCollection = join, - SqlWhereCollection = where, - Using = _using - }; - } - public static SqlExists ExistsExtensions( Sqls.TableTypes tableType = Sqls.TableTypes.Normal, bool not = false, @@ -7300,66 +7120,6 @@ public static SqlStatement IdentityInsertDepts_History( template: "set identity_insert \"Depts_History\" off;")); } - public static SqlInsert InsertExportSettings( - string dataTableName = null, - bool selectIdentity = false, - Sqls.TableTypes tableType = Sqls.TableTypes.Normal, - SqlParamCollection param = null, - SqlStatement select = null, - bool addUpdatorParam = true, - string _if = null, - bool _using = true) - { - return new SqlInsert - { - DataTableName = dataTableName, - TableType = tableType, - TableBracket = "\"ExportSettings\"", - IdentityColumnName = "\"ExportSettingId\"", - HistoryTableBracket = "\"ExportSettings_history\"", - DeletedTableBracket = "\"ExportSettings_deleted\"", - SelectIdentity = selectIdentity, - SqlParamCollection = param, - Select = select, - AddUpdatorParam = addUpdatorParam, - If = _if, - Using = _using - }; - } - - public static SqlStatement IdentityInsertExportSettings( - ISqlObjectFactory factory, - bool on) - { - return on - ? new SqlStatement(factory.SqlCommandText.CreateIdentityInsert( - template: "set identity_insert \"ExportSettings\" on;")) - : new SqlStatement(factory.SqlCommandText.CreateIdentityInsert( - template: "set identity_insert \"ExportSettings\" off;")); - } - - public static SqlStatement IdentityInsertExportSettings_Deleted( - ISqlObjectFactory factory, - bool on) - { - return on - ? new SqlStatement(factory.SqlCommandText.CreateIdentityInsert( - template: "set identity_insert \"ExportSettings_Deleted\" on;")) - : new SqlStatement(factory.SqlCommandText.CreateIdentityInsert( - template: "set identity_insert \"ExportSettings_Deleted\" off;")); - } - - public static SqlStatement IdentityInsertExportSettings_History( - ISqlObjectFactory factory, - bool on) - { - return on - ? new SqlStatement(factory.SqlCommandText.CreateIdentityInsert( - template: "set identity_insert \"ExportSettings_History\" on;")) - : new SqlStatement(factory.SqlCommandText.CreateIdentityInsert( - template: "set identity_insert \"ExportSettings_History\" off;")); - } - public static SqlInsert InsertExtensions( string dataTableName = null, bool selectIdentity = false, @@ -8830,32 +8590,6 @@ public static SqlUpdate UpdateDepts( }; } - public static SqlUpdate UpdateExportSettings( - string dataTableName = null, - Sqls.TableTypes tableType = Sqls.TableTypes.Normal, - SqlWhereCollection where = null, - SqlParamCollection param = null, - bool addUpdatorParam = true, - bool addUpdatedTimeParam = true, - string _if = null, - bool _using = true) - { - return new SqlUpdate - { - DataTableName = dataTableName, - TableType = tableType, - TableBracket = "\"ExportSettings\"", - HistoryTableBracket = "\"ExportSettings_history\"", - DeletedTableBracket = "\"ExportSettings_deleted\"", - SqlWhereCollection = where, - SqlParamCollection = param, - AddUpdatorParam = addUpdatorParam, - AddUpdatedTimeParam = addUpdatedTimeParam, - If = _if, - Using = _using - }; - } - public static SqlUpdate UpdateExtensions( string dataTableName = null, Sqls.TableTypes tableType = Sqls.TableTypes.Normal, @@ -9566,34 +9300,6 @@ public static SqlUpdateOrInsert UpdateOrInsertDepts( }; } - public static SqlUpdateOrInsert UpdateOrInsertExportSettings( - string dataTableName = null, - Sqls.TableTypes tableType = Sqls.TableTypes.Normal, - bool selectIdentity = false, - SqlWhereCollection where = null, - SqlParamCollection param = null, - bool addUpdatorParam = true, - bool addUpdatedTimeParam = true, - string _if = null, - bool _using = true) - { - return new SqlUpdateOrInsert - { - DataTableName = dataTableName, - TableType = tableType, - TableBracket = "\"ExportSettings\"", - HistoryTableBracket = "\"ExportSettings_history\"", - DeletedTableBracket = "\"ExportSettings_deleted\"", - SelectIdentity = selectIdentity, - SqlWhereCollection = where, - SqlParamCollection = param, - AddUpdatorParam = addUpdatorParam, - AddUpdatedTimeParam = addUpdatedTimeParam, - If = _if, - Using = _using - }; - } - public static SqlUpdateOrInsert UpdateOrInsertExtensions( string dataTableName = null, Sqls.TableTypes tableType = Sqls.TableTypes.Normal, @@ -10326,28 +10032,6 @@ public static SqlDelete DeleteDepts( }; } - public static SqlDelete DeleteExportSettings( - ISqlObjectFactory factory, - string dataTableName = null, - SqlWhereCollection where = null, - SqlParamCollection param = null, - string _if = null, - bool _using = true) - { - return new SqlDelete() - { - DataTableName = dataTableName, - CommandText = DeleteExportSettingsStatement(factory: factory), - TableBracket = "\"ExportSettings\"", - HistoryTableBracket = "\"ExportSettings_history\"", - DeletedTableBracket = "\"ExportSettings_deleted\"", - SqlWhereCollection = where, - SqlParamCollection = param, - If = _if, - Using = _using - }; - } - public static SqlDelete DeleteExtensions( ISqlObjectFactory factory, string dataTableName = null, @@ -10934,26 +10618,6 @@ public static SqlPhysicalDelete PhysicalDeleteDepts( }; } - public static SqlPhysicalDelete PhysicalDeleteExportSettings( - Sqls.TableTypes tableType = Sqls.TableTypes.Normal, - SqlWhereCollection where = null, - SqlParamCollection param = null, - string _if = null, - bool _using = true) - { - return new SqlPhysicalDelete() - { - TableType = tableType, - TableBracket = "\"ExportSettings\"", - HistoryTableBracket = "\"ExportSettings_history\"", - DeletedTableBracket = "\"ExportSettings_deleted\"", - SqlWhereCollection = where, - SqlParamCollection = param, - If = _if, - Using = _using - }; - } - public static SqlPhysicalDelete PhysicalDeleteExtensions( Sqls.TableTypes tableType = Sqls.TableTypes.Normal, SqlWhereCollection where = null, @@ -11494,26 +11158,6 @@ public static SqlRestore RestoreDepts( }; } - public static SqlRestore RestoreExportSettings( - ISqlObjectFactory factory, - SqlWhereCollection where = null, - SqlParamCollection param = null, - string _if = null, - bool _using = true) - { - return new SqlRestore() - { - CommandText = RestoreExportSettingsStatement(factory: factory), - TableBracket = "\"ExportSettings\"", - HistoryTableBracket = "\"ExportSettings_history\"", - DeletedTableBracket = "\"ExportSettings_deleted\"", - SqlWhereCollection = where, - SqlParamCollection = param, - If = _if, - Using = _using - }; - } - public static SqlRestore RestoreExtensions( ISqlObjectFactory factory, SqlWhereCollection where = null, @@ -12085,29 +11729,6 @@ public static SqlStatement DeptsCopyToStatement(SqlWhereCollection where, Sqls.T addUpdatorParam: false); } - public static SqlStatement ExportSettingsCopyToStatement(SqlWhereCollection where, Sqls.TableTypes tableType, List columnNames) - { - var column = new ExportSettingsColumnCollection(); - var param = new ExportSettingsParamCollection(); - column.ReferenceType(function: Sqls.Functions.SingleColumn); param.ReferenceType(); - column.ReferenceId(function: Sqls.Functions.SingleColumn); param.ReferenceId(); - column.Title(function: Sqls.Functions.SingleColumn); param.Title(); - column.ExportSettingId(function: Sqls.Functions.SingleColumn); param.ExportSettingId(); - column.Ver(function: Sqls.Functions.SingleColumn); param.Ver(); - column.AddHeader(function: Sqls.Functions.SingleColumn); param.AddHeader(); - column.ExportColumns(function: Sqls.Functions.SingleColumn); param.ExportColumns(); - column.Comments(function: Sqls.Functions.SingleColumn); param.Comments(); - column.Creator(function: Sqls.Functions.SingleColumn); param.Creator(); - column.Updator(function: Sqls.Functions.SingleColumn); param.Updator(); - column.CreatedTime(function: Sqls.Functions.SingleColumn); param.CreatedTime(); - column.UpdatedTime(function: Sqls.Functions.SingleColumn); param.UpdatedTime(); - return InsertExportSettings( - tableType: tableType, - param: param, - select: SelectExportSettings(column: column, where: where), - addUpdatorParam: false); - } - public static SqlStatement ExtensionsCopyToStatement(SqlWhereCollection where, Sqls.TableTypes tableType, List columnNames) { var column = new ExtensionsColumnCollection(); @@ -13212,77 +12833,6 @@ public static IEnumerable DeptsAggregations( return statementCollection; } - public static IEnumerable ExportSettingsAggregations( - Context context, - IEnumerable aggregations, - Sqls.TableTypes tableType, - SqlWhereCollection where, - SqlParamCollection param) - { - var statementCollection = new List() - { - SelectExportSettings( - dataTableName: "Count", - tableType: tableType, - column: ExportSettingsColumn().ExportSettingsCount(), - where: where, - param: param) - }; - if (tableType != Sqls.TableTypes.Normal) - { - return statementCollection; - } - aggregations - .Select((o, i) => new { Aggregation = o, Index = i }) - .ForEach(data => - { - var groupBy = ExportSettingsGroupBy(); - var column = ExportSettingsColumn(); - switch (data.Aggregation.GroupBy) - { - case "\"NotGroupBy\"": - break; - default: - groupBy.ExportSettingsGroupBy(columnName: data.Aggregation.GroupBy); - column.ExportSettingsColumn(columnName: data.Aggregation.GroupBy); - break; - } - switch (data.Aggregation.Type) - { - case Aggregation.Types.Count: - column.ExportSettingsCount(); break; - case Aggregation.Types.Total: - switch (data.Aggregation.Target) - { - default: - column.ExportSettingsColumn( - columnName: data.Aggregation.Target, - function: Sqls.Functions.Sum); - break; - } - break; - case Aggregation.Types.Average: - switch (data.Aggregation.Target) - { - default: - column.ExportSettingsColumn( - columnName: data.Aggregation.Target, - function: Sqls.Functions.Avg); - break; - } - break; - default: break; - } - var statement = SelectExportSettings( - dataTableName: "Aggregation" + data.Index, - column: column, - where: where, - groupBy: groupBy); - statementCollection.Add(statement); - }); - return statementCollection; - } - public static IEnumerable ExtensionsAggregations( Context context, IEnumerable aggregations, @@ -15157,48 +14707,6 @@ insert into ""Depts_deleted"" delete from ""Depts"" {{0}}".Params(DeleteParams(tableName: "Depts")); } - public static string DeleteExportSettingsStatement(ISqlObjectFactory factory) - { - return $@" - update ""ExportSettings"" - set - ""Updator"" = {Parameters.Parameter.SqlParameterPrefix}U, - ""UpdatedTime"" = {factory.Sqls.CurrentDateTime} {{0}}; - insert into ""ExportSettings_deleted"" - ( - ""ReferenceType"", - ""ReferenceId"", - ""Title"", - ""ExportSettingId"", - ""Ver"", - ""AddHeader"", - ""ExportColumns"", - ""Comments"", - ""Creator"", - ""Updator"", - ""CreatedTime"", - ""UpdatedTime"" - {{1}} - ) - ( - select - ""ExportSettings"".""ReferenceType"", - ""ExportSettings"".""ReferenceId"", - ""ExportSettings"".""Title"", - ""ExportSettings"".""ExportSettingId"", - ""ExportSettings"".""Ver"", - ""ExportSettings"".""AddHeader"", - ""ExportSettings"".""ExportColumns"", - ""ExportSettings"".""Comments"", - ""ExportSettings"".""Creator"", - ""ExportSettings"".""Updator"", - ""ExportSettings"".""CreatedTime"", - ""ExportSettings"".""UpdatedTime"" - {{2}} - from ""ExportSettings"" {{0}}); - delete from ""ExportSettings"" {{0}}".Params(DeleteParams(tableName: "ExportSettings")); - } - public static string DeleteExtensionsStatement(ISqlObjectFactory factory) { return $@" @@ -16604,52 +16112,6 @@ insert into ""Depts"" delete from ""Depts_deleted"" {{0}}".Params(DeleteParams(tableName: "Depts")); } - public static string RestoreExportSettingsStatement(ISqlObjectFactory factory) - { - return $@" - update ""ExportSettings_deleted"" - set - ""Updator"" = {Parameters.Parameter.SqlParameterPrefix}U, - ""UpdatedTime"" = {factory.Sqls.CurrentDateTime} {{0}}; - {factory.SqlCommandText.CreateIdentityInsert( - template: "set identity_insert \"ExportSettings\" on;")} - insert into ""ExportSettings"" - ( - ""ReferenceType"", - ""ReferenceId"", - ""Title"", - ""ExportSettingId"", - ""Ver"", - ""AddHeader"", - ""ExportColumns"", - ""Comments"", - ""Creator"", - ""Updator"", - ""CreatedTime"", - ""UpdatedTime"" - {{2}} - ) - ( - select - ""ExportSettings_deleted"".""ReferenceType"", - ""ExportSettings_deleted"".""ReferenceId"", - ""ExportSettings_deleted"".""Title"", - ""ExportSettings_deleted"".""ExportSettingId"", - ""ExportSettings_deleted"".""Ver"", - ""ExportSettings_deleted"".""AddHeader"", - ""ExportSettings_deleted"".""ExportColumns"", - ""ExportSettings_deleted"".""Comments"", - ""ExportSettings_deleted"".""Creator"", - ""ExportSettings_deleted"".""Updator"", - ""ExportSettings_deleted"".""CreatedTime"", - ""ExportSettings_deleted"".""UpdatedTime"" - {{1}} - from ""ExportSettings_deleted"" {{0}}); - {factory.SqlCommandText.CreateIdentityInsert( - template: "set identity_insert \"ExportSettings\" off;")} - delete from ""ExportSettings_deleted"" {{0}}".Params(DeleteParams(tableName: "ExportSettings")); - } - public static string RestoreExtensionsStatement(ISqlObjectFactory factory) { return $@" @@ -28719,3038 +28181,10 @@ public static DeptsColumnCollection DeptsColumn( } } - public static DeptsColumnCollection TenantId( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "TenantId", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"TenantId\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_TenantId( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "TenantId", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"TenantId\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection DeptId( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "DeptId", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptId\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_DeptId( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "DeptId", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptId\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection Ver( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "Ver", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Ver\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_Ver( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "Ver", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Ver\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection DeptCode( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "DeptCode", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptCode\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_DeptCode( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "DeptCode", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptCode\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection DeptName( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "DeptName", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptName\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_DeptName( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "DeptName", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptName\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection Body( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "Body", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Body\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_Body( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "Body", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Body\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection Disabled( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "Disabled", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Disabled\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_Disabled( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "Disabled", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Disabled\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection Comments( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "Comments", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Comments\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_Comments( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "Comments", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Comments\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection Creator( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "Creator", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Creator\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_Creator( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "Creator", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Creator\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection Updator( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "Updator", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Updator\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_Updator( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "Updator", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Updator\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection CreatedTime( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "CreatedTime", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"CreatedTime\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_CreatedTime( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "CreatedTime", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"CreatedTime\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection UpdatedTime( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "UpdatedTime", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"UpdatedTime\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_UpdatedTime( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "UpdatedTime", - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"UpdatedTime\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection Dept( - this DeptsColumnCollection self, - string tableName = "Depts", - string columnName = "Dept", - string _as = "Dept", - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptId\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static SqlColumnCollection Depts_Dept( - this SqlColumnCollection self, - string tableName = "Depts", - string columnName = "Dept", - string _as = "Dept", - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptId\"", - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub) - : self; - } - - public static DeptsColumnCollection DeptsCount( - this DeptsColumnCollection self, - string _as = "DeptsCount") - { - return self.Add( - columnBracket: "*", - tableName: null, - _as: _as, - function: Sqls.Functions.Count); - } - - public static DeptsWhereCollection TenantId( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"TenantId\"" }, - tableName: tableName, - name: "TenantId", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_TenantId( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"TenantId\"" }, - tableName: tableName, - name: "TenantId", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection DeptId( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptId\"" }, - tableName: tableName, - name: "DeptId", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_DeptId( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptId\"" }, - tableName: tableName, - name: "DeptId", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection Ver( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Ver\"" }, - tableName: tableName, - name: "Ver", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_Ver( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Ver\"" }, - tableName: tableName, - name: "Ver", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection DeptCode( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptCode\"" }, - tableName: tableName, - name: "DeptCode", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_DeptCode( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptCode\"" }, - tableName: tableName, - name: "DeptCode", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection DeptName( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptName\"" }, - tableName: tableName, - name: "DeptName", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_DeptName( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptName\"" }, - tableName: tableName, - name: "DeptName", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection Body( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Body\"" }, - tableName: tableName, - name: "Body", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_Body( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Body\"" }, - tableName: tableName, - name: "Body", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection Disabled( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Disabled\"" }, - tableName: tableName, - name: "Disabled", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_Disabled( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Disabled\"" }, - tableName: tableName, - name: "Disabled", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection Comments( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Comments\"" }, - tableName: tableName, - name: "Comments", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_Comments( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Comments\"" }, - tableName: tableName, - name: "Comments", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection Creator( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Creator\"" }, - tableName: tableName, - name: "Creator", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_Creator( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Creator\"" }, - tableName: tableName, - name: "Creator", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection Updator( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Updator\"" }, - tableName: tableName, - name: "Updator", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_Updator( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Updator\"" }, - tableName: tableName, - name: "Updator", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection CreatedTime( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"CreatedTime\"" }, - tableName: tableName, - name: "CreatedTime", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_CreatedTime( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"CreatedTime\"" }, - tableName: tableName, - name: "CreatedTime", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection UpdatedTime( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"UpdatedTime\"" }, - tableName: tableName, - name: "UpdatedTime", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_UpdatedTime( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"UpdatedTime\"" }, - tableName: tableName, - name: "UpdatedTime", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection Dept( - this DeptsWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptId\"" }, - tableName: tableName, - name: "Dept", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static SqlWhereCollection Depts_Dept( - this SqlWhereCollection self, - object value = null, - string tableName = "Depts", - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptId\"" }, - tableName: tableName, - name: "Dept", - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - sub: sub, - subPrefix: subPrefix, - raw: raw) - : self; - } - - public static DeptsWhereCollection TenantId_In( - this DeptsWhereCollection self, - IEnumerable value = null, - string tableName = "Depts", - SqlStatement sub = null, - bool negative = false, - bool _using = true) - { - if (!_using) - { - return self; - } - if (sub != null) - { - return self.Add( - columnBrackets: new string[] { "\"TenantId\"" }, - tableName: tableName, - name: "TenantId", - _operator: !negative ? " in " : " not in ", - sub: sub); - } - else if (value != null && value.Any()) - { - return self.Add( - columnBrackets: new string[] { "\"TenantId\"" }, - tableName: tableName, - name: "TenantId", - _operator: !negative ? " in " : " not in ", - raw: "({0})".Params(value.Join())); - } - else - { - return !negative - ? self.Add(raw: "1=0") - : self; - } - } - - public static DeptsWhereCollection DeptId_In( - this DeptsWhereCollection self, - IEnumerable value = null, - string tableName = "Depts", - SqlStatement sub = null, - bool negative = false, - bool _using = true) - { - if (!_using) - { - return self; - } - if (sub != null) - { - return self.Add( - columnBrackets: new string[] { "\"DeptId\"" }, - tableName: tableName, - name: "DeptId", - _operator: !negative ? " in " : " not in ", - sub: sub); - } - else if (value != null && value.Any()) - { - return self.Add( - columnBrackets: new string[] { "\"DeptId\"" }, - tableName: tableName, - name: "DeptId", - _operator: !negative ? " in " : " not in ", - raw: "({0})".Params(value.Join())); - } - else - { - return !negative - ? self.Add(raw: "1=0") - : self; - } - } - - public static DeptsWhereCollection Ver_In( - this DeptsWhereCollection self, - IEnumerable value = null, - string tableName = "Depts", - SqlStatement sub = null, - bool negative = false, - bool _using = true) - { - if (!_using) - { - return self; - } - if (sub != null) - { - return self.Add( - columnBrackets: new string[] { "\"Ver\"" }, - tableName: tableName, - name: "Ver", - _operator: !negative ? " in " : " not in ", - sub: sub); - } - else if (value != null && value.Any()) - { - return self.Add( - columnBrackets: new string[] { "\"Ver\"" }, - tableName: tableName, - name: "Ver", - _operator: !negative ? " in " : " not in ", - raw: "({0})".Params(value.Join())); - } - else - { - return !negative - ? self.Add(raw: "1=0") - : self; - } - } - - public static DeptsWhereCollection Creator_In( - this DeptsWhereCollection self, - IEnumerable value = null, - string tableName = "Depts", - SqlStatement sub = null, - bool negative = false, - bool _using = true) - { - if (!_using) - { - return self; - } - if (sub != null) - { - return self.Add( - columnBrackets: new string[] { "\"Creator\"" }, - tableName: tableName, - name: "Creator", - _operator: !negative ? " in " : " not in ", - sub: sub); - } - else if (value != null && value.Any()) - { - return self.Add( - columnBrackets: new string[] { "\"Creator\"" }, - tableName: tableName, - name: "Creator", - _operator: !negative ? " in " : " not in ", - raw: "({0})".Params(value.Join())); - } - else - { - return !negative - ? self.Add(raw: "1=0") - : self; - } - } - - public static DeptsWhereCollection Updator_In( - this DeptsWhereCollection self, - IEnumerable value = null, - string tableName = "Depts", - SqlStatement sub = null, - bool negative = false, - bool _using = true) - { - if (!_using) - { - return self; - } - if (sub != null) - { - return self.Add( - columnBrackets: new string[] { "\"Updator\"" }, - tableName: tableName, - name: "Updator", - _operator: !negative ? " in " : " not in ", - sub: sub); - } - else if (value != null && value.Any()) - { - return self.Add( - columnBrackets: new string[] { "\"Updator\"" }, - tableName: tableName, - name: "Updator", - _operator: !negative ? " in " : " not in ", - raw: "({0})".Params(value.Join())); - } - else - { - return !negative - ? self.Add(raw: "1=0") - : self; - } - } - - public static DeptsWhereCollection TenantId_Between( - this DeptsWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"TenantId\"" }, - tableName: tableName, - name: "TenantId", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static SqlWhereCollection Depts_TenantId_Between( - this SqlWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"TenantId\"" }, - tableName: tableName, - name: "TenantId", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static DeptsWhereCollection DeptId_Between( - this DeptsWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptId\"" }, - tableName: tableName, - name: "DeptId", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static SqlWhereCollection Depts_DeptId_Between( - this SqlWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"DeptId\"" }, - tableName: tableName, - name: "DeptId", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static DeptsWhereCollection Ver_Between( - this DeptsWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Ver\"" }, - tableName: tableName, - name: "Ver", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static SqlWhereCollection Depts_Ver_Between( - this SqlWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Ver\"" }, - tableName: tableName, - name: "Ver", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static DeptsWhereCollection Creator_Between( - this DeptsWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Creator\"" }, - tableName: tableName, - name: "Creator", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static SqlWhereCollection Depts_Creator_Between( - this SqlWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Creator\"" }, - tableName: tableName, - name: "Creator", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static DeptsWhereCollection Updator_Between( - this DeptsWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Updator\"" }, - tableName: tableName, - name: "Updator", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static SqlWhereCollection Depts_Updator_Between( - this SqlWhereCollection self, - int begin, - int end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"Updator\"" }, - tableName: tableName, - name: "Updator", - _operator: " between ", - raw: "{0} and {1} ".Params(begin, end)) - : self; - } - - public static DeptsWhereCollection CreatedTime_Between( - this DeptsWhereCollection self, - DateTime begin, - DateTime end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"CreatedTime\"" }, - tableName: tableName, - name: "CreatedTime", - _operator: " between ", - raw: "'{0}' and '{1}' ".Params(begin, end)) - : self; - } - - public static SqlWhereCollection Depts_CreatedTime_Between( - this SqlWhereCollection self, - DateTime begin, - DateTime end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"CreatedTime\"" }, - tableName: tableName, - name: "CreatedTime", - _operator: " between ", - raw: "'{0}' and '{1}' ".Params(begin, end)) - : self; - } - - public static DeptsWhereCollection UpdatedTime_Between( - this DeptsWhereCollection self, - DateTime begin, - DateTime end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"UpdatedTime\"" }, - tableName: tableName, - name: "UpdatedTime", - _operator: " between ", - raw: "'{0}' and '{1}' ".Params(begin, end)) - : self; - } - - public static SqlWhereCollection Depts_UpdatedTime_Between( - this SqlWhereCollection self, - DateTime begin, - DateTime end, - string tableName = "Depts", - bool _using = true) - { - return _using - ? self.Add( - columnBrackets: new string[] { "\"UpdatedTime\"" }, - tableName: tableName, - name: "UpdatedTime", - _operator: " between ", - raw: "'{0}' and '{1}' ".Params(begin, end)) - : self; - } - - public static DeptsWhereCollection Sub( - this DeptsWhereCollection self, - SqlStatement sub, - object value = null, - string _operator = "=", - bool _using = true) - { - return _using - ? self.Add( - null, null, null, value, _operator, sub: sub) - : self; - } - - public static DeptsGroupByCollection DeptsGroupBy( - this DeptsGroupByCollection self, string columnName, bool _using = true) - { - if (_using) - { - switch (columnName) - { - case "TenantId": return self.TenantId(); - case "DeptId": return self.DeptId(); - case "Ver": return self.Ver(); - case "DeptCode": return self.DeptCode(); - case "Dept": return self.Dept(); - case "DeptName": return self.DeptName(); - case "Body": return self.Body(); - case "Disabled": return self.Disabled(); - case "Comments": return self.Comments(); - case "Creator": return self.Creator(); - case "Updator": return self.Updator(); - case "CreatedTime": return self.CreatedTime(); - case "UpdatedTime": return self.UpdatedTime(); - default: - return Def.ExtendedColumnTypes.ContainsKey(columnName ?? string.Empty) - ? self.Add(columnBracket: $"\"{columnName}\"") - : self; - } - } - else - { - return self; - } - } - - public static DeptsGroupByCollection TenantId( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"TenantId\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_TenantId( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"TenantId\"", tableName: tableName); - } - - public static DeptsGroupByCollection DeptId( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"DeptId\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_DeptId( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"DeptId\"", tableName: tableName); - } - - public static DeptsGroupByCollection Ver( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Ver\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_Ver( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Ver\"", tableName: tableName); - } - - public static DeptsGroupByCollection DeptCode( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"DeptCode\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_DeptCode( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"DeptCode\"", tableName: tableName); - } - - public static DeptsGroupByCollection Dept( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"DeptId\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_Dept( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"DeptId\"", tableName: tableName); - } - - public static DeptsGroupByCollection DeptName( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"DeptName\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_DeptName( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"DeptName\"", tableName: tableName); - } - - public static DeptsGroupByCollection Body( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Body\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_Body( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Body\"", tableName: tableName); - } - - public static DeptsGroupByCollection Disabled( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Disabled\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_Disabled( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Disabled\"", tableName: tableName); - } - - public static DeptsGroupByCollection Comments( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Comments\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_Comments( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Comments\"", tableName: tableName); - } - - public static DeptsGroupByCollection Creator( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Creator\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_Creator( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Creator\"", tableName: tableName); - } - - public static DeptsGroupByCollection Updator( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Updator\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_Updator( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"Updator\"", tableName: tableName); - } - - public static DeptsGroupByCollection CreatedTime( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"CreatedTime\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_CreatedTime( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"CreatedTime\"", tableName: tableName); - } - - public static DeptsGroupByCollection UpdatedTime( - this DeptsGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"UpdatedTime\"", tableName: tableName); - } - - public static SqlGroupByCollection Depts_UpdatedTime( - this SqlGroupByCollection self, string tableName = "Depts") - { - return self.Add(columnBracket: "\"UpdatedTime\"", tableName: tableName); - } - - public static DeptsHavingCollection DeptsCount( - this DeptsHavingCollection self, - object value = null, - string tableName = "Depts", - string _operator = null) - { - return self.Add( - columnBracket: "*", - value: value, - tableName: tableName, - _operator: _operator, - function: Sqls.Functions.Count); - } - - public static DeptsHavingCollection CreatedTime( - this DeptsHavingCollection self, - string tableName = "Depts", - object value = null, - string _operator = "=", - Sqls.Functions function = Sqls.Functions.None) - { - return self.Add( - columnBracket: "CreatedTime", - tableName: tableName, - value: value, - _operator: _operator, - function: function); - } - - public static DeptsHavingCollection UpdatedTime( - this DeptsHavingCollection self, - string tableName = "Depts", - object value = null, - string _operator = "=", - Sqls.Functions function = Sqls.Functions.None) - { - return self.Add( - columnBracket: "UpdatedTime", - tableName: tableName, - value: value, - _operator: _operator, - function: function); - } - - public static DeptsOrderByCollection TenantId( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"TenantId\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection DeptId( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"DeptId\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection Ver( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Ver\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection DeptCode( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"DeptCode\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection Dept( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"DeptId\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection DeptName( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"DeptName\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection Body( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Body\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection Disabled( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Disabled\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection Comments( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Comments\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection Creator( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Creator\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection Updator( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Updator\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection CreatedTime( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"CreatedTime\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection UpdatedTime( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"UpdatedTime\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_TenantId( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"TenantId\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_DeptId( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"DeptId\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_Ver( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Ver\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_DeptCode( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"DeptCode\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_Dept( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"DeptId\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_DeptName( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"DeptName\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_Body( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Body\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_Disabled( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Disabled\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_Comments( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Comments\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_Creator( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Creator\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_Updator( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"Updator\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_CreatedTime( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"CreatedTime\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static SqlOrderByCollection Depts_UpdatedTime( - this SqlOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "Depts", - string isNullValue = null, - Sqls.Functions function = Sqls.Functions.None) - { - new List { "\"UpdatedTime\"" }.ForEach(columnBracket => - self.Add( - columnBracket: columnBracket, - orderType: orderType, - tableName: tableName, - isNullValue: isNullValue, - function: function)); - return self; - } - - public static DeptsOrderByCollection DeptsCount( - this DeptsOrderByCollection self, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc) - { - return self.Add( - columnBracket: "*", - orderType: orderType, - function: Sqls.Functions.Count); - } - - public static DeptsParamCollection TenantId( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"TenantId\"", - name: "TenantId", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_TenantId( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"TenantId\"", - name: "TenantId", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection DeptId( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptId\"", - name: "DeptId", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_DeptId( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptId\"", - name: "DeptId", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection Ver( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Ver\"", - name: "Ver", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_Ver( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Ver\"", - name: "Ver", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection DeptCode( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptCode\"", - name: "DeptCode", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_DeptCode( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptCode\"", - name: "DeptCode", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection DeptName( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptName\"", - name: "DeptName", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_DeptName( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"DeptName\"", - name: "DeptName", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection Body( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Body\"", - name: "Body", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_Body( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Body\"", - name: "Body", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection Disabled( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Disabled\"", - name: "Disabled", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_Disabled( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Disabled\"", - name: "Disabled", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection Comments( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Comments\"", - name: "Comments", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_Comments( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Comments\"", - name: "Comments", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection Creator( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Creator\"", - name: "Creator", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_Creator( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Creator\"", - name: "Creator", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection Updator( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Updator\"", - name: "Updator", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_Updator( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"Updator\"", - name: "Updator", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection CreatedTime( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"CreatedTime\"", - name: "CreatedTime", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_CreatedTime( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"CreatedTime\"", - name: "CreatedTime", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static DeptsParamCollection UpdatedTime( - this DeptsParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"UpdatedTime\"", - name: "UpdatedTime", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static SqlParamCollection Depts_UpdatedTime( - this SqlParamCollection self, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - return _using - ? self.Add( - columnBracket: "\"UpdatedTime\"", - name: "UpdatedTime", - value: value, - sub: sub, - raw: raw) - : self; - } - - public static ExportSettingsColumnCollection ExportSettingsColumn() - { - return new ExportSettingsColumnCollection(); - } - - public class ExportSettingsColumnCollection : SqlColumnCollection - { - public new ExportSettingsColumnCollection Add( - string columnBracket = null, - string tableName = "ExportSettings", - string columnName = null, - string _as = null, - Sqls.Functions function = Sqls.Functions.None, - SqlStatement sub = null, - bool subPrefix = true) - { - base.Add( - columnBracket: columnBracket, - tableName: tableName, - columnName: columnName, - _as: _as, - function: function, - sub: sub, - subPrefix: subPrefix); - return this; - } - } - - public static ExportSettingsJoinCollection ExportSettingsJoin() - { - return new ExportSettingsJoinCollection(); - } - - public class ExportSettingsJoinCollection : SqlJoinCollection - { - public ExportSettingsJoinCollection Add(params SqlJoin[] sqlJoinCollection) - { - sqlJoinCollection.ForEach(sqlJoin => base.Add(sqlJoin)); - return this; - } - } - - public static ExportSettingsWhereCollection ExportSettingsWhere() - { - return new ExportSettingsWhereCollection(); - } - - public class ExportSettingsWhereCollection : SqlWhereCollection - { - public ExportSettingsWhereCollection Add( - string tableName = "ExportSettings", - string[] columnBrackets = null, - string name = null, - object value = null, - string _operator = "=", - string multiColumnOperator = " or ", - string multiParamOperator = " and ", - SqlStatement subLeft = null, - SqlStatement sub = null, - bool subPrefix = true, - string raw = null, - bool _using = true) - { - if (_using) - { - Add(new SqlWhere( - columnBrackets: columnBrackets, - tableName: tableName, - name: name, - value: value, - _operator: _operator, - multiColumnOperator: multiColumnOperator, - multiParamOperator: multiParamOperator, - subLeft: subLeft, - sub: sub, - subPrefix: subPrefix, - raw: raw)); - } - return this; - } - } - - public static ExportSettingsGroupByCollection ExportSettingsGroupBy() - { - return new ExportSettingsGroupByCollection(); - } - - public class ExportSettingsGroupByCollection : SqlGroupByCollection - { - public new ExportSettingsGroupByCollection Add( - string columnBracket, string tableName = "ExportSettings") - { - Add(new SqlGroupBy( - columnBracket: columnBracket, - tableName: tableName)); - return this; - } - } - - public static ExportSettingsHavingCollection ExportSettingsHaving() - { - return new ExportSettingsHavingCollection(); - } - - public class ExportSettingsHavingCollection : SqlHavingCollection - { - public ExportSettingsHavingCollection Add( - string columnBracket, - string tableName = "ExportSettings", - object value = null, - string _operator = "=", - Sqls.Functions function = Sqls.Functions.None) - { - Add(new SqlHaving( - columnBracket: columnBracket, - tableName: tableName, - value: value, - _operator: _operator, - function: function)); - return this; - } - } - - public static ExportSettingsOrderByCollection ExportSettingsOrderBy() - { - return new ExportSettingsOrderByCollection(); - } - - public class ExportSettingsOrderByCollection : SqlOrderByCollection - { - public ExportSettingsOrderByCollection Add( - string columnBracket, - SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", - Sqls.Functions function = Sqls.Functions.None) - { - Add(new SqlOrderBy( - columnBracket: columnBracket, - tableName: tableName, - orderType: orderType, - function: function)); - return this; - } - } - - public static ExportSettingsParamCollection ExportSettingsParam() - { - return new ExportSettingsParamCollection(); - } - - public class ExportSettingsParamCollection : SqlParamCollection - { - public new ExportSettingsParamCollection Add( - string columnBracket = null, - string name = null, - object value = null, - SqlStatement sub = null, - string raw = null, - bool _using = true) - { - Add(new SqlParam( - columnBracket: columnBracket, - name: name, - value: value, - sub: sub, - raw: raw, - _using: _using)); - return this; - } - } - - public static ExportSettingsColumnCollection ExportSettingsColumn( - this ExportSettingsColumnCollection self, - string columnName, - string _as = null, - Sqls.Functions function = Sqls.Functions.None) - { - switch (columnName) - { - case "ReferenceType": - return self.ReferenceType(_as: _as, function: function); - case "ReferenceId": - return self.ReferenceId(_as: _as, function: function); - case "Title": - return self.Title(_as: _as, function: function); - case "ExportSettingId": - return self.ExportSettingId(_as: _as, function: function); - case "Ver": - return self.Ver(_as: _as, function: function); - case "AddHeader": - return self.AddHeader(_as: _as, function: function); - case "ExportColumns": - return self.ExportColumns(_as: _as, function: function); - case "Comments": - return self.Comments(_as: _as, function: function); - case "Creator": - return self.Creator(_as: _as, function: function); - case "Updator": - return self.Updator(_as: _as, function: function); - case "CreatedTime": - return self.CreatedTime(_as: _as, function: function); - case "UpdatedTime": - return self.UpdatedTime(_as: _as, function: function); - default: - return Def.ExtendedColumnTypes.ContainsKey(columnName ?? string.Empty) - ? self.Add( - columnBracket: $"\"{columnName}\"", - columnName: columnName, - _as: _as, - function: function) - : self; - } - } - - public static ExportSettingsColumnCollection ReferenceType( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", - string columnName = "ReferenceType", + public static DeptsColumnCollection TenantId( + this DeptsColumnCollection self, + string tableName = "Depts", + string columnName = "TenantId", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31758,7 +28192,7 @@ public static ExportSettingsColumnCollection ReferenceType( { return _using ? self.Add( - columnBracket: "\"ReferenceType\"", + columnBracket: "\"TenantId\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31767,10 +28201,10 @@ public static ExportSettingsColumnCollection ReferenceType( : self; } - public static SqlColumnCollection ExportSettings_ReferenceType( + public static SqlColumnCollection Depts_TenantId( this SqlColumnCollection self, - string tableName = "ExportSettings", - string columnName = "ReferenceType", + string tableName = "Depts", + string columnName = "TenantId", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31778,7 +28212,7 @@ public static SqlColumnCollection ExportSettings_ReferenceType( { return _using ? self.Add( - columnBracket: "\"ReferenceType\"", + columnBracket: "\"TenantId\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31787,10 +28221,10 @@ public static SqlColumnCollection ExportSettings_ReferenceType( : self; } - public static ExportSettingsColumnCollection ReferenceId( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", - string columnName = "ReferenceId", + public static DeptsColumnCollection DeptId( + this DeptsColumnCollection self, + string tableName = "Depts", + string columnName = "DeptId", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31798,7 +28232,7 @@ public static ExportSettingsColumnCollection ReferenceId( { return _using ? self.Add( - columnBracket: "\"ReferenceId\"", + columnBracket: "\"DeptId\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31807,10 +28241,10 @@ public static ExportSettingsColumnCollection ReferenceId( : self; } - public static SqlColumnCollection ExportSettings_ReferenceId( + public static SqlColumnCollection Depts_DeptId( this SqlColumnCollection self, - string tableName = "ExportSettings", - string columnName = "ReferenceId", + string tableName = "Depts", + string columnName = "DeptId", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31818,7 +28252,7 @@ public static SqlColumnCollection ExportSettings_ReferenceId( { return _using ? self.Add( - columnBracket: "\"ReferenceId\"", + columnBracket: "\"DeptId\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31827,10 +28261,10 @@ public static SqlColumnCollection ExportSettings_ReferenceId( : self; } - public static ExportSettingsColumnCollection Title( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", - string columnName = "Title", + public static DeptsColumnCollection Ver( + this DeptsColumnCollection self, + string tableName = "Depts", + string columnName = "Ver", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31838,7 +28272,7 @@ public static ExportSettingsColumnCollection Title( { return _using ? self.Add( - columnBracket: "\"Title\"", + columnBracket: "\"Ver\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31847,10 +28281,10 @@ public static ExportSettingsColumnCollection Title( : self; } - public static SqlColumnCollection ExportSettings_Title( + public static SqlColumnCollection Depts_Ver( this SqlColumnCollection self, - string tableName = "ExportSettings", - string columnName = "Title", + string tableName = "Depts", + string columnName = "Ver", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31858,7 +28292,7 @@ public static SqlColumnCollection ExportSettings_Title( { return _using ? self.Add( - columnBracket: "\"Title\"", + columnBracket: "\"Ver\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31867,10 +28301,10 @@ public static SqlColumnCollection ExportSettings_Title( : self; } - public static ExportSettingsColumnCollection ExportSettingId( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", - string columnName = "ExportSettingId", + public static DeptsColumnCollection DeptCode( + this DeptsColumnCollection self, + string tableName = "Depts", + string columnName = "DeptCode", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31878,7 +28312,7 @@ public static ExportSettingsColumnCollection ExportSettingId( { return _using ? self.Add( - columnBracket: "\"ExportSettingId\"", + columnBracket: "\"DeptCode\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31887,10 +28321,10 @@ public static ExportSettingsColumnCollection ExportSettingId( : self; } - public static SqlColumnCollection ExportSettings_ExportSettingId( + public static SqlColumnCollection Depts_DeptCode( this SqlColumnCollection self, - string tableName = "ExportSettings", - string columnName = "ExportSettingId", + string tableName = "Depts", + string columnName = "DeptCode", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31898,7 +28332,7 @@ public static SqlColumnCollection ExportSettings_ExportSettingId( { return _using ? self.Add( - columnBracket: "\"ExportSettingId\"", + columnBracket: "\"DeptCode\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31907,10 +28341,10 @@ public static SqlColumnCollection ExportSettings_ExportSettingId( : self; } - public static ExportSettingsColumnCollection Ver( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", - string columnName = "Ver", + public static DeptsColumnCollection DeptName( + this DeptsColumnCollection self, + string tableName = "Depts", + string columnName = "DeptName", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31918,7 +28352,7 @@ public static ExportSettingsColumnCollection Ver( { return _using ? self.Add( - columnBracket: "\"Ver\"", + columnBracket: "\"DeptName\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31927,10 +28361,10 @@ public static ExportSettingsColumnCollection Ver( : self; } - public static SqlColumnCollection ExportSettings_Ver( + public static SqlColumnCollection Depts_DeptName( this SqlColumnCollection self, - string tableName = "ExportSettings", - string columnName = "Ver", + string tableName = "Depts", + string columnName = "DeptName", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31938,7 +28372,7 @@ public static SqlColumnCollection ExportSettings_Ver( { return _using ? self.Add( - columnBracket: "\"Ver\"", + columnBracket: "\"DeptName\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31947,10 +28381,10 @@ public static SqlColumnCollection ExportSettings_Ver( : self; } - public static ExportSettingsColumnCollection AddHeader( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", - string columnName = "AddHeader", + public static DeptsColumnCollection Body( + this DeptsColumnCollection self, + string tableName = "Depts", + string columnName = "Body", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31958,7 +28392,7 @@ public static ExportSettingsColumnCollection AddHeader( { return _using ? self.Add( - columnBracket: "\"AddHeader\"", + columnBracket: "\"Body\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31967,10 +28401,10 @@ public static ExportSettingsColumnCollection AddHeader( : self; } - public static SqlColumnCollection ExportSettings_AddHeader( + public static SqlColumnCollection Depts_Body( this SqlColumnCollection self, - string tableName = "ExportSettings", - string columnName = "AddHeader", + string tableName = "Depts", + string columnName = "Body", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31978,7 +28412,7 @@ public static SqlColumnCollection ExportSettings_AddHeader( { return _using ? self.Add( - columnBracket: "\"AddHeader\"", + columnBracket: "\"Body\"", tableName: tableName, columnName: columnName, _as: _as, @@ -31987,10 +28421,10 @@ public static SqlColumnCollection ExportSettings_AddHeader( : self; } - public static ExportSettingsColumnCollection ExportColumns( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", - string columnName = "ExportColumns", + public static DeptsColumnCollection Disabled( + this DeptsColumnCollection self, + string tableName = "Depts", + string columnName = "Disabled", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -31998,7 +28432,7 @@ public static ExportSettingsColumnCollection ExportColumns( { return _using ? self.Add( - columnBracket: "\"ExportColumns\"", + columnBracket: "\"Disabled\"", tableName: tableName, columnName: columnName, _as: _as, @@ -32007,10 +28441,10 @@ public static ExportSettingsColumnCollection ExportColumns( : self; } - public static SqlColumnCollection ExportSettings_ExportColumns( + public static SqlColumnCollection Depts_Disabled( this SqlColumnCollection self, - string tableName = "ExportSettings", - string columnName = "ExportColumns", + string tableName = "Depts", + string columnName = "Disabled", string _as = null, Sqls.Functions function = Sqls.Functions.None, SqlStatement sub = null, @@ -32018,7 +28452,7 @@ public static SqlColumnCollection ExportSettings_ExportColumns( { return _using ? self.Add( - columnBracket: "\"ExportColumns\"", + columnBracket: "\"Disabled\"", tableName: tableName, columnName: columnName, _as: _as, @@ -32027,9 +28461,9 @@ public static SqlColumnCollection ExportSettings_ExportColumns( : self; } - public static ExportSettingsColumnCollection Comments( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", + public static DeptsColumnCollection Comments( + this DeptsColumnCollection self, + string tableName = "Depts", string columnName = "Comments", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32047,9 +28481,9 @@ public static ExportSettingsColumnCollection Comments( : self; } - public static SqlColumnCollection ExportSettings_Comments( + public static SqlColumnCollection Depts_Comments( this SqlColumnCollection self, - string tableName = "ExportSettings", + string tableName = "Depts", string columnName = "Comments", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32067,9 +28501,9 @@ public static SqlColumnCollection ExportSettings_Comments( : self; } - public static ExportSettingsColumnCollection Creator( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", + public static DeptsColumnCollection Creator( + this DeptsColumnCollection self, + string tableName = "Depts", string columnName = "Creator", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32087,9 +28521,9 @@ public static ExportSettingsColumnCollection Creator( : self; } - public static SqlColumnCollection ExportSettings_Creator( + public static SqlColumnCollection Depts_Creator( this SqlColumnCollection self, - string tableName = "ExportSettings", + string tableName = "Depts", string columnName = "Creator", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32107,9 +28541,9 @@ public static SqlColumnCollection ExportSettings_Creator( : self; } - public static ExportSettingsColumnCollection Updator( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", + public static DeptsColumnCollection Updator( + this DeptsColumnCollection self, + string tableName = "Depts", string columnName = "Updator", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32127,9 +28561,9 @@ public static ExportSettingsColumnCollection Updator( : self; } - public static SqlColumnCollection ExportSettings_Updator( + public static SqlColumnCollection Depts_Updator( this SqlColumnCollection self, - string tableName = "ExportSettings", + string tableName = "Depts", string columnName = "Updator", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32147,9 +28581,9 @@ public static SqlColumnCollection ExportSettings_Updator( : self; } - public static ExportSettingsColumnCollection CreatedTime( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", + public static DeptsColumnCollection CreatedTime( + this DeptsColumnCollection self, + string tableName = "Depts", string columnName = "CreatedTime", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32167,9 +28601,9 @@ public static ExportSettingsColumnCollection CreatedTime( : self; } - public static SqlColumnCollection ExportSettings_CreatedTime( + public static SqlColumnCollection Depts_CreatedTime( this SqlColumnCollection self, - string tableName = "ExportSettings", + string tableName = "Depts", string columnName = "CreatedTime", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32187,9 +28621,9 @@ public static SqlColumnCollection ExportSettings_CreatedTime( : self; } - public static ExportSettingsColumnCollection UpdatedTime( - this ExportSettingsColumnCollection self, - string tableName = "ExportSettings", + public static DeptsColumnCollection UpdatedTime( + this DeptsColumnCollection self, + string tableName = "Depts", string columnName = "UpdatedTime", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32207,9 +28641,9 @@ public static ExportSettingsColumnCollection UpdatedTime( : self; } - public static SqlColumnCollection ExportSettings_UpdatedTime( + public static SqlColumnCollection Depts_UpdatedTime( this SqlColumnCollection self, - string tableName = "ExportSettings", + string tableName = "Depts", string columnName = "UpdatedTime", string _as = null, Sqls.Functions function = Sqls.Functions.None, @@ -32227,9 +28661,49 @@ public static SqlColumnCollection ExportSettings_UpdatedTime( : self; } - public static ExportSettingsColumnCollection ExportSettingsCount( - this ExportSettingsColumnCollection self, - string _as = "ExportSettingsCount") + public static DeptsColumnCollection Dept( + this DeptsColumnCollection self, + string tableName = "Depts", + string columnName = "Dept", + string _as = "Dept", + Sqls.Functions function = Sqls.Functions.None, + SqlStatement sub = null, + bool _using = true) + { + return _using + ? self.Add( + columnBracket: "\"DeptId\"", + tableName: tableName, + columnName: columnName, + _as: _as, + function: function, + sub: sub) + : self; + } + + public static SqlColumnCollection Depts_Dept( + this SqlColumnCollection self, + string tableName = "Depts", + string columnName = "Dept", + string _as = "Dept", + Sqls.Functions function = Sqls.Functions.None, + SqlStatement sub = null, + bool _using = true) + { + return _using + ? self.Add( + columnBracket: "\"DeptId\"", + tableName: tableName, + columnName: columnName, + _as: _as, + function: function, + sub: sub) + : self; + } + + public static DeptsColumnCollection DeptsCount( + this DeptsColumnCollection self, + string _as = "DeptsCount") { return self.Add( columnBracket: "*", @@ -32238,10 +28712,10 @@ public static ExportSettingsColumnCollection ExportSettingsCount( function: Sqls.Functions.Count); } - public static ExportSettingsWhereCollection ReferenceType( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection TenantId( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32253,9 +28727,9 @@ public static ExportSettingsWhereCollection ReferenceType( { return _using ? self.Add( - columnBrackets: new string[] { "\"ReferenceType\"" }, + columnBrackets: new string[] { "\"TenantId\"" }, tableName: tableName, - name: "ReferenceType", + name: "TenantId", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32267,10 +28741,10 @@ public static ExportSettingsWhereCollection ReferenceType( : self; } - public static SqlWhereCollection ExportSettings_ReferenceType( + public static SqlWhereCollection Depts_TenantId( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32282,9 +28756,9 @@ public static SqlWhereCollection ExportSettings_ReferenceType( { return _using ? self.Add( - columnBrackets: new string[] { "\"ReferenceType\"" }, + columnBrackets: new string[] { "\"TenantId\"" }, tableName: tableName, - name: "ReferenceType", + name: "TenantId", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32296,10 +28770,10 @@ public static SqlWhereCollection ExportSettings_ReferenceType( : self; } - public static ExportSettingsWhereCollection ReferenceId( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection DeptId( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32311,9 +28785,9 @@ public static ExportSettingsWhereCollection ReferenceId( { return _using ? self.Add( - columnBrackets: new string[] { "\"ReferenceId\"" }, + columnBrackets: new string[] { "\"DeptId\"" }, tableName: tableName, - name: "ReferenceId", + name: "DeptId", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32325,10 +28799,10 @@ public static ExportSettingsWhereCollection ReferenceId( : self; } - public static SqlWhereCollection ExportSettings_ReferenceId( + public static SqlWhereCollection Depts_DeptId( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32340,9 +28814,9 @@ public static SqlWhereCollection ExportSettings_ReferenceId( { return _using ? self.Add( - columnBrackets: new string[] { "\"ReferenceId\"" }, + columnBrackets: new string[] { "\"DeptId\"" }, tableName: tableName, - name: "ReferenceId", + name: "DeptId", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32354,10 +28828,10 @@ public static SqlWhereCollection ExportSettings_ReferenceId( : self; } - public static ExportSettingsWhereCollection Title( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Ver( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32369,9 +28843,9 @@ public static ExportSettingsWhereCollection Title( { return _using ? self.Add( - columnBrackets: new string[] { "\"Title\"" }, + columnBrackets: new string[] { "\"Ver\"" }, tableName: tableName, - name: "Title", + name: "Ver", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32383,10 +28857,10 @@ public static ExportSettingsWhereCollection Title( : self; } - public static SqlWhereCollection ExportSettings_Title( + public static SqlWhereCollection Depts_Ver( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32398,9 +28872,9 @@ public static SqlWhereCollection ExportSettings_Title( { return _using ? self.Add( - columnBrackets: new string[] { "\"Title\"" }, + columnBrackets: new string[] { "\"Ver\"" }, tableName: tableName, - name: "Title", + name: "Ver", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32412,10 +28886,10 @@ public static SqlWhereCollection ExportSettings_Title( : self; } - public static ExportSettingsWhereCollection ExportSettingId( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection DeptCode( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32427,9 +28901,9 @@ public static ExportSettingsWhereCollection ExportSettingId( { return _using ? self.Add( - columnBrackets: new string[] { "\"ExportSettingId\"" }, + columnBrackets: new string[] { "\"DeptCode\"" }, tableName: tableName, - name: "ExportSettingId", + name: "DeptCode", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32441,10 +28915,10 @@ public static ExportSettingsWhereCollection ExportSettingId( : self; } - public static SqlWhereCollection ExportSettings_ExportSettingId( + public static SqlWhereCollection Depts_DeptCode( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32456,9 +28930,9 @@ public static SqlWhereCollection ExportSettings_ExportSettingId( { return _using ? self.Add( - columnBrackets: new string[] { "\"ExportSettingId\"" }, + columnBrackets: new string[] { "\"DeptCode\"" }, tableName: tableName, - name: "ExportSettingId", + name: "DeptCode", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32470,10 +28944,10 @@ public static SqlWhereCollection ExportSettings_ExportSettingId( : self; } - public static ExportSettingsWhereCollection Ver( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection DeptName( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32485,9 +28959,9 @@ public static ExportSettingsWhereCollection Ver( { return _using ? self.Add( - columnBrackets: new string[] { "\"Ver\"" }, + columnBrackets: new string[] { "\"DeptName\"" }, tableName: tableName, - name: "Ver", + name: "DeptName", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32499,10 +28973,10 @@ public static ExportSettingsWhereCollection Ver( : self; } - public static SqlWhereCollection ExportSettings_Ver( + public static SqlWhereCollection Depts_DeptName( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32514,9 +28988,9 @@ public static SqlWhereCollection ExportSettings_Ver( { return _using ? self.Add( - columnBrackets: new string[] { "\"Ver\"" }, + columnBrackets: new string[] { "\"DeptName\"" }, tableName: tableName, - name: "Ver", + name: "DeptName", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32528,10 +29002,10 @@ public static SqlWhereCollection ExportSettings_Ver( : self; } - public static ExportSettingsWhereCollection AddHeader( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Body( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32543,9 +29017,9 @@ public static ExportSettingsWhereCollection AddHeader( { return _using ? self.Add( - columnBrackets: new string[] { "\"AddHeader\"" }, + columnBrackets: new string[] { "\"Body\"" }, tableName: tableName, - name: "AddHeader", + name: "Body", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32557,10 +29031,10 @@ public static ExportSettingsWhereCollection AddHeader( : self; } - public static SqlWhereCollection ExportSettings_AddHeader( + public static SqlWhereCollection Depts_Body( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32572,9 +29046,9 @@ public static SqlWhereCollection ExportSettings_AddHeader( { return _using ? self.Add( - columnBrackets: new string[] { "\"AddHeader\"" }, + columnBrackets: new string[] { "\"Body\"" }, tableName: tableName, - name: "AddHeader", + name: "Body", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32586,10 +29060,10 @@ public static SqlWhereCollection ExportSettings_AddHeader( : self; } - public static ExportSettingsWhereCollection ExportColumns( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Disabled( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32601,9 +29075,9 @@ public static ExportSettingsWhereCollection ExportColumns( { return _using ? self.Add( - columnBrackets: new string[] { "\"ExportColumns\"" }, + columnBrackets: new string[] { "\"Disabled\"" }, tableName: tableName, - name: "ExportColumns", + name: "Disabled", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32615,10 +29089,10 @@ public static ExportSettingsWhereCollection ExportColumns( : self; } - public static SqlWhereCollection ExportSettings_ExportColumns( + public static SqlWhereCollection Depts_Disabled( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32630,9 +29104,9 @@ public static SqlWhereCollection ExportSettings_ExportColumns( { return _using ? self.Add( - columnBrackets: new string[] { "\"ExportColumns\"" }, + columnBrackets: new string[] { "\"Disabled\"" }, tableName: tableName, - name: "ExportColumns", + name: "Disabled", value: value, _operator: _operator, multiColumnOperator: multiColumnOperator, @@ -32644,10 +29118,10 @@ public static SqlWhereCollection ExportSettings_ExportColumns( : self; } - public static ExportSettingsWhereCollection Comments( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Comments( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32673,10 +29147,10 @@ public static ExportSettingsWhereCollection Comments( : self; } - public static SqlWhereCollection ExportSettings_Comments( + public static SqlWhereCollection Depts_Comments( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32702,10 +29176,10 @@ public static SqlWhereCollection ExportSettings_Comments( : self; } - public static ExportSettingsWhereCollection Creator( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Creator( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32731,10 +29205,10 @@ public static ExportSettingsWhereCollection Creator( : self; } - public static SqlWhereCollection ExportSettings_Creator( + public static SqlWhereCollection Depts_Creator( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32760,10 +29234,10 @@ public static SqlWhereCollection ExportSettings_Creator( : self; } - public static ExportSettingsWhereCollection Updator( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Updator( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32789,10 +29263,10 @@ public static ExportSettingsWhereCollection Updator( : self; } - public static SqlWhereCollection ExportSettings_Updator( + public static SqlWhereCollection Depts_Updator( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32818,10 +29292,10 @@ public static SqlWhereCollection ExportSettings_Updator( : self; } - public static ExportSettingsWhereCollection CreatedTime( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection CreatedTime( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32847,10 +29321,10 @@ public static ExportSettingsWhereCollection CreatedTime( : self; } - public static SqlWhereCollection ExportSettings_CreatedTime( + public static SqlWhereCollection Depts_CreatedTime( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32876,10 +29350,10 @@ public static SqlWhereCollection ExportSettings_CreatedTime( : self; } - public static ExportSettingsWhereCollection UpdatedTime( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection UpdatedTime( + this DeptsWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32905,10 +29379,10 @@ public static ExportSettingsWhereCollection UpdatedTime( : self; } - public static SqlWhereCollection ExportSettings_UpdatedTime( + public static SqlWhereCollection Depts_UpdatedTime( this SqlWhereCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = "=", string multiColumnOperator = " or ", string multiParamOperator = " and ", @@ -32934,10 +29408,64 @@ public static SqlWhereCollection ExportSettings_UpdatedTime( : self; } - public static ExportSettingsWhereCollection ReferenceId_In( - this ExportSettingsWhereCollection self, - IEnumerable value = null, - string tableName = "ExportSettings", + public static DeptsWhereCollection Dept( + this DeptsWhereCollection self, + object value = null, + string tableName = "Depts", + string _operator = "=", + string multiColumnOperator = " or ", + string multiParamOperator = " and ", + SqlStatement sub = null, + bool subPrefix = true, + string raw = null, + bool _using = true) + { + return _using + ? self.Add( + columnBrackets: new string[] { "\"DeptId\"" }, + tableName: tableName, + name: "Dept", + value: value, + _operator: _operator, + multiColumnOperator: multiColumnOperator, + multiParamOperator: multiParamOperator, + sub: sub, + subPrefix: subPrefix, + raw: raw) + : self; + } + + public static SqlWhereCollection Depts_Dept( + this SqlWhereCollection self, + object value = null, + string tableName = "Depts", + string _operator = "=", + string multiColumnOperator = " or ", + string multiParamOperator = " and ", + SqlStatement sub = null, + bool subPrefix = true, + string raw = null, + bool _using = true) + { + return _using + ? self.Add( + columnBrackets: new string[] { "\"DeptId\"" }, + tableName: tableName, + name: "Dept", + value: value, + _operator: _operator, + multiColumnOperator: multiColumnOperator, + multiParamOperator: multiParamOperator, + sub: sub, + subPrefix: subPrefix, + raw: raw) + : self; + } + + public static DeptsWhereCollection TenantId_In( + this DeptsWhereCollection self, + IEnumerable value = null, + string tableName = "Depts", SqlStatement sub = null, bool negative = false, bool _using = true) @@ -32949,18 +29477,18 @@ public static ExportSettingsWhereCollection ReferenceId_In( if (sub != null) { return self.Add( - columnBrackets: new string[] { "\"ReferenceId\"" }, + columnBrackets: new string[] { "\"TenantId\"" }, tableName: tableName, - name: "ReferenceId", + name: "TenantId", _operator: !negative ? " in " : " not in ", sub: sub); } else if (value != null && value.Any()) { return self.Add( - columnBrackets: new string[] { "\"ReferenceId\"" }, + columnBrackets: new string[] { "\"TenantId\"" }, tableName: tableName, - name: "ReferenceId", + name: "TenantId", _operator: !negative ? " in " : " not in ", raw: "({0})".Params(value.Join())); } @@ -32972,10 +29500,10 @@ public static ExportSettingsWhereCollection ReferenceId_In( } } - public static ExportSettingsWhereCollection ExportSettingId_In( - this ExportSettingsWhereCollection self, - IEnumerable value = null, - string tableName = "ExportSettings", + public static DeptsWhereCollection DeptId_In( + this DeptsWhereCollection self, + IEnumerable value = null, + string tableName = "Depts", SqlStatement sub = null, bool negative = false, bool _using = true) @@ -32987,18 +29515,18 @@ public static ExportSettingsWhereCollection ExportSettingId_In( if (sub != null) { return self.Add( - columnBrackets: new string[] { "\"ExportSettingId\"" }, + columnBrackets: new string[] { "\"DeptId\"" }, tableName: tableName, - name: "ExportSettingId", + name: "DeptId", _operator: !negative ? " in " : " not in ", sub: sub); } else if (value != null && value.Any()) { return self.Add( - columnBrackets: new string[] { "\"ExportSettingId\"" }, + columnBrackets: new string[] { "\"DeptId\"" }, tableName: tableName, - name: "ExportSettingId", + name: "DeptId", _operator: !negative ? " in " : " not in ", raw: "({0})".Params(value.Join())); } @@ -33010,10 +29538,10 @@ public static ExportSettingsWhereCollection ExportSettingId_In( } } - public static ExportSettingsWhereCollection Ver_In( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Ver_In( + this DeptsWhereCollection self, IEnumerable value = null, - string tableName = "ExportSettings", + string tableName = "Depts", SqlStatement sub = null, bool negative = false, bool _using = true) @@ -33048,10 +29576,10 @@ public static ExportSettingsWhereCollection Ver_In( } } - public static ExportSettingsWhereCollection Creator_In( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Creator_In( + this DeptsWhereCollection self, IEnumerable value = null, - string tableName = "ExportSettings", + string tableName = "Depts", SqlStatement sub = null, bool negative = false, bool _using = true) @@ -33086,10 +29614,10 @@ public static ExportSettingsWhereCollection Creator_In( } } - public static ExportSettingsWhereCollection Updator_In( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Updator_In( + this DeptsWhereCollection self, IEnumerable value = null, - string tableName = "ExportSettings", + string tableName = "Depts", SqlStatement sub = null, bool negative = false, bool _using = true) @@ -33124,79 +29652,79 @@ public static ExportSettingsWhereCollection Updator_In( } } - public static ExportSettingsWhereCollection ReferenceId_Between( - this ExportSettingsWhereCollection self, - long begin, - long end, - string tableName = "ExportSettings", + public static DeptsWhereCollection TenantId_Between( + this DeptsWhereCollection self, + int begin, + int end, + string tableName = "Depts", bool _using = true) { return _using ? self.Add( - columnBrackets: new string[] { "\"ReferenceId\"" }, + columnBrackets: new string[] { "\"TenantId\"" }, tableName: tableName, - name: "ReferenceId", + name: "TenantId", _operator: " between ", raw: "{0} and {1} ".Params(begin, end)) : self; } - public static SqlWhereCollection ExportSettings_ReferenceId_Between( + public static SqlWhereCollection Depts_TenantId_Between( this SqlWhereCollection self, - long begin, - long end, - string tableName = "ExportSettings", + int begin, + int end, + string tableName = "Depts", bool _using = true) { return _using ? self.Add( - columnBrackets: new string[] { "\"ReferenceId\"" }, + columnBrackets: new string[] { "\"TenantId\"" }, tableName: tableName, - name: "ReferenceId", + name: "TenantId", _operator: " between ", raw: "{0} and {1} ".Params(begin, end)) : self; } - public static ExportSettingsWhereCollection ExportSettingId_Between( - this ExportSettingsWhereCollection self, - long begin, - long end, - string tableName = "ExportSettings", + public static DeptsWhereCollection DeptId_Between( + this DeptsWhereCollection self, + int begin, + int end, + string tableName = "Depts", bool _using = true) { return _using ? self.Add( - columnBrackets: new string[] { "\"ExportSettingId\"" }, + columnBrackets: new string[] { "\"DeptId\"" }, tableName: tableName, - name: "ExportSettingId", + name: "DeptId", _operator: " between ", raw: "{0} and {1} ".Params(begin, end)) : self; } - public static SqlWhereCollection ExportSettings_ExportSettingId_Between( + public static SqlWhereCollection Depts_DeptId_Between( this SqlWhereCollection self, - long begin, - long end, - string tableName = "ExportSettings", + int begin, + int end, + string tableName = "Depts", bool _using = true) { return _using ? self.Add( - columnBrackets: new string[] { "\"ExportSettingId\"" }, + columnBrackets: new string[] { "\"DeptId\"" }, tableName: tableName, - name: "ExportSettingId", + name: "DeptId", _operator: " between ", raw: "{0} and {1} ".Params(begin, end)) : self; } - public static ExportSettingsWhereCollection Ver_Between( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Ver_Between( + this DeptsWhereCollection self, int begin, int end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33209,11 +29737,11 @@ public static ExportSettingsWhereCollection Ver_Between( : self; } - public static SqlWhereCollection ExportSettings_Ver_Between( + public static SqlWhereCollection Depts_Ver_Between( this SqlWhereCollection self, int begin, int end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33226,11 +29754,11 @@ public static SqlWhereCollection ExportSettings_Ver_Between( : self; } - public static ExportSettingsWhereCollection Creator_Between( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Creator_Between( + this DeptsWhereCollection self, int begin, int end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33243,11 +29771,11 @@ public static ExportSettingsWhereCollection Creator_Between( : self; } - public static SqlWhereCollection ExportSettings_Creator_Between( + public static SqlWhereCollection Depts_Creator_Between( this SqlWhereCollection self, int begin, int end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33260,11 +29788,11 @@ public static SqlWhereCollection ExportSettings_Creator_Between( : self; } - public static ExportSettingsWhereCollection Updator_Between( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Updator_Between( + this DeptsWhereCollection self, int begin, int end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33277,11 +29805,11 @@ public static ExportSettingsWhereCollection Updator_Between( : self; } - public static SqlWhereCollection ExportSettings_Updator_Between( + public static SqlWhereCollection Depts_Updator_Between( this SqlWhereCollection self, int begin, int end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33294,11 +29822,11 @@ public static SqlWhereCollection ExportSettings_Updator_Between( : self; } - public static ExportSettingsWhereCollection CreatedTime_Between( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection CreatedTime_Between( + this DeptsWhereCollection self, DateTime begin, DateTime end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33311,11 +29839,11 @@ public static ExportSettingsWhereCollection CreatedTime_Between( : self; } - public static SqlWhereCollection ExportSettings_CreatedTime_Between( + public static SqlWhereCollection Depts_CreatedTime_Between( this SqlWhereCollection self, DateTime begin, DateTime end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33328,11 +29856,11 @@ public static SqlWhereCollection ExportSettings_CreatedTime_Between( : self; } - public static ExportSettingsWhereCollection UpdatedTime_Between( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection UpdatedTime_Between( + this DeptsWhereCollection self, DateTime begin, DateTime end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33345,11 +29873,11 @@ public static ExportSettingsWhereCollection UpdatedTime_Between( : self; } - public static SqlWhereCollection ExportSettings_UpdatedTime_Between( + public static SqlWhereCollection Depts_UpdatedTime_Between( this SqlWhereCollection self, DateTime begin, DateTime end, - string tableName = "ExportSettings", + string tableName = "Depts", bool _using = true) { return _using @@ -33362,8 +29890,8 @@ public static SqlWhereCollection ExportSettings_UpdatedTime_Between( : self; } - public static ExportSettingsWhereCollection Sub( - this ExportSettingsWhereCollection self, + public static DeptsWhereCollection Sub( + this DeptsWhereCollection self, SqlStatement sub, object value = null, string _operator = "=", @@ -33375,20 +29903,21 @@ public static ExportSettingsWhereCollection Sub( : self; } - public static ExportSettingsGroupByCollection ExportSettingsGroupBy( - this ExportSettingsGroupByCollection self, string columnName, bool _using = true) + public static DeptsGroupByCollection DeptsGroupBy( + this DeptsGroupByCollection self, string columnName, bool _using = true) { if (_using) { switch (columnName) { - case "ReferenceType": return self.ReferenceType(); - case "ReferenceId": return self.ReferenceId(); - case "Title": return self.Title(); - case "ExportSettingId": return self.ExportSettingId(); + case "TenantId": return self.TenantId(); + case "DeptId": return self.DeptId(); case "Ver": return self.Ver(); - case "AddHeader": return self.AddHeader(); - case "ExportColumns": return self.ExportColumns(); + case "DeptCode": return self.DeptCode(); + case "Dept": return self.Dept(); + case "DeptName": return self.DeptName(); + case "Body": return self.Body(); + case "Disabled": return self.Disabled(); case "Comments": return self.Comments(); case "Creator": return self.Creator(); case "Updator": return self.Updator(); @@ -33406,154 +29935,166 @@ public static ExportSettingsGroupByCollection ExportSettingsGroupBy( } } - public static ExportSettingsGroupByCollection ReferenceType( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection TenantId( + this DeptsGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"ReferenceType\"", tableName: tableName); + return self.Add(columnBracket: "\"TenantId\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_ReferenceType( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_TenantId( + this SqlGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"ReferenceType\"", tableName: tableName); + return self.Add(columnBracket: "\"TenantId\"", tableName: tableName); } - public static ExportSettingsGroupByCollection ReferenceId( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection DeptId( + this DeptsGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"ReferenceId\"", tableName: tableName); + return self.Add(columnBracket: "\"DeptId\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_ReferenceId( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_DeptId( + this SqlGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"ReferenceId\"", tableName: tableName); + return self.Add(columnBracket: "\"DeptId\"", tableName: tableName); } - public static ExportSettingsGroupByCollection Title( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection Ver( + this DeptsGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"Title\"", tableName: tableName); + return self.Add(columnBracket: "\"Ver\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_Title( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_Ver( + this SqlGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"Title\"", tableName: tableName); + return self.Add(columnBracket: "\"Ver\"", tableName: tableName); } - public static ExportSettingsGroupByCollection ExportSettingId( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection DeptCode( + this DeptsGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"ExportSettingId\"", tableName: tableName); + return self.Add(columnBracket: "\"DeptCode\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_ExportSettingId( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_DeptCode( + this SqlGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"ExportSettingId\"", tableName: tableName); + return self.Add(columnBracket: "\"DeptCode\"", tableName: tableName); } - public static ExportSettingsGroupByCollection Ver( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection Dept( + this DeptsGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"Ver\"", tableName: tableName); + return self.Add(columnBracket: "\"DeptId\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_Ver( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_Dept( + this SqlGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"Ver\"", tableName: tableName); + return self.Add(columnBracket: "\"DeptId\"", tableName: tableName); } - public static ExportSettingsGroupByCollection AddHeader( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection DeptName( + this DeptsGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"AddHeader\"", tableName: tableName); + return self.Add(columnBracket: "\"DeptName\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_AddHeader( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_DeptName( + this SqlGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"AddHeader\"", tableName: tableName); + return self.Add(columnBracket: "\"DeptName\"", tableName: tableName); } - public static ExportSettingsGroupByCollection ExportColumns( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection Body( + this DeptsGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"ExportColumns\"", tableName: tableName); + return self.Add(columnBracket: "\"Body\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_ExportColumns( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_Body( + this SqlGroupByCollection self, string tableName = "Depts") { - return self.Add(columnBracket: "\"ExportColumns\"", tableName: tableName); + return self.Add(columnBracket: "\"Body\"", tableName: tableName); } - public static ExportSettingsGroupByCollection Comments( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection Disabled( + this DeptsGroupByCollection self, string tableName = "Depts") + { + return self.Add(columnBracket: "\"Disabled\"", tableName: tableName); + } + + public static SqlGroupByCollection Depts_Disabled( + this SqlGroupByCollection self, string tableName = "Depts") + { + return self.Add(columnBracket: "\"Disabled\"", tableName: tableName); + } + + public static DeptsGroupByCollection Comments( + this DeptsGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"Comments\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_Comments( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_Comments( + this SqlGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"Comments\"", tableName: tableName); } - public static ExportSettingsGroupByCollection Creator( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection Creator( + this DeptsGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"Creator\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_Creator( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_Creator( + this SqlGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"Creator\"", tableName: tableName); } - public static ExportSettingsGroupByCollection Updator( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection Updator( + this DeptsGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"Updator\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_Updator( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_Updator( + this SqlGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"Updator\"", tableName: tableName); } - public static ExportSettingsGroupByCollection CreatedTime( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection CreatedTime( + this DeptsGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"CreatedTime\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_CreatedTime( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_CreatedTime( + this SqlGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"CreatedTime\"", tableName: tableName); } - public static ExportSettingsGroupByCollection UpdatedTime( - this ExportSettingsGroupByCollection self, string tableName = "ExportSettings") + public static DeptsGroupByCollection UpdatedTime( + this DeptsGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"UpdatedTime\"", tableName: tableName); } - public static SqlGroupByCollection ExportSettings_UpdatedTime( - this SqlGroupByCollection self, string tableName = "ExportSettings") + public static SqlGroupByCollection Depts_UpdatedTime( + this SqlGroupByCollection self, string tableName = "Depts") { return self.Add(columnBracket: "\"UpdatedTime\"", tableName: tableName); } - public static ExportSettingsHavingCollection ExportSettingsCount( - this ExportSettingsHavingCollection self, + public static DeptsHavingCollection DeptsCount( + this DeptsHavingCollection self, object value = null, - string tableName = "ExportSettings", + string tableName = "Depts", string _operator = null) { return self.Add( @@ -33564,9 +30105,9 @@ public static ExportSettingsHavingCollection ExportSettingsCount( function: Sqls.Functions.Count); } - public static ExportSettingsHavingCollection CreatedTime( - this ExportSettingsHavingCollection self, - string tableName = "ExportSettings", + public static DeptsHavingCollection CreatedTime( + this DeptsHavingCollection self, + string tableName = "Depts", object value = null, string _operator = "=", Sqls.Functions function = Sqls.Functions.None) @@ -33579,9 +30120,9 @@ public static ExportSettingsHavingCollection CreatedTime( function: function); } - public static ExportSettingsHavingCollection UpdatedTime( - this ExportSettingsHavingCollection self, - string tableName = "ExportSettings", + public static DeptsHavingCollection UpdatedTime( + this DeptsHavingCollection self, + string tableName = "Depts", object value = null, string _operator = "=", Sqls.Functions function = Sqls.Functions.None) @@ -33594,14 +30135,14 @@ public static ExportSettingsHavingCollection UpdatedTime( function: function); } - public static ExportSettingsOrderByCollection ReferenceType( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection TenantId( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"ReferenceType\"" }.ForEach(columnBracket => + new List { "\"TenantId\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33611,14 +30152,14 @@ public static ExportSettingsOrderByCollection ReferenceType( return self; } - public static ExportSettingsOrderByCollection ReferenceId( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection DeptId( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"ReferenceId\"" }.ForEach(columnBracket => + new List { "\"DeptId\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33628,14 +30169,14 @@ public static ExportSettingsOrderByCollection ReferenceId( return self; } - public static ExportSettingsOrderByCollection Title( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection Ver( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"Title\"" }.ForEach(columnBracket => + new List { "\"Ver\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33645,14 +30186,14 @@ public static ExportSettingsOrderByCollection Title( return self; } - public static ExportSettingsOrderByCollection ExportSettingId( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection DeptCode( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"ExportSettingId\"" }.ForEach(columnBracket => + new List { "\"DeptCode\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33662,14 +30203,14 @@ public static ExportSettingsOrderByCollection ExportSettingId( return self; } - public static ExportSettingsOrderByCollection Ver( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection Dept( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"Ver\"" }.ForEach(columnBracket => + new List { "\"DeptId\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33679,14 +30220,14 @@ public static ExportSettingsOrderByCollection Ver( return self; } - public static ExportSettingsOrderByCollection AddHeader( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection DeptName( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"AddHeader\"" }.ForEach(columnBracket => + new List { "\"DeptName\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33696,14 +30237,14 @@ public static ExportSettingsOrderByCollection AddHeader( return self; } - public static ExportSettingsOrderByCollection ExportColumns( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection Body( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"ExportColumns\"" }.ForEach(columnBracket => + new List { "\"Body\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33713,10 +30254,27 @@ public static ExportSettingsOrderByCollection ExportColumns( return self; } - public static ExportSettingsOrderByCollection Comments( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection Disabled( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", + string isNullValue = null, + Sqls.Functions function = Sqls.Functions.None) + { + new List { "\"Disabled\"" }.ForEach(columnBracket => + self.Add( + columnBracket: columnBracket, + orderType: orderType, + tableName: tableName, + isNullValue: isNullValue, + function: function)); + return self; + } + + public static DeptsOrderByCollection Comments( + this DeptsOrderByCollection self, + SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -33730,10 +30288,10 @@ public static ExportSettingsOrderByCollection Comments( return self; } - public static ExportSettingsOrderByCollection Creator( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection Creator( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -33747,10 +30305,10 @@ public static ExportSettingsOrderByCollection Creator( return self; } - public static ExportSettingsOrderByCollection Updator( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection Updator( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -33764,10 +30322,10 @@ public static ExportSettingsOrderByCollection Updator( return self; } - public static ExportSettingsOrderByCollection CreatedTime( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection CreatedTime( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -33781,10 +30339,10 @@ public static ExportSettingsOrderByCollection CreatedTime( return self; } - public static ExportSettingsOrderByCollection UpdatedTime( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection UpdatedTime( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -33798,14 +30356,14 @@ public static ExportSettingsOrderByCollection UpdatedTime( return self; } - public static SqlOrderByCollection ExportSettings_ReferenceType( + public static SqlOrderByCollection Depts_TenantId( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"ReferenceType\"" }.ForEach(columnBracket => + new List { "\"TenantId\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33815,14 +30373,14 @@ public static SqlOrderByCollection ExportSettings_ReferenceType( return self; } - public static SqlOrderByCollection ExportSettings_ReferenceId( + public static SqlOrderByCollection Depts_DeptId( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"ReferenceId\"" }.ForEach(columnBracket => + new List { "\"DeptId\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33832,14 +30390,14 @@ public static SqlOrderByCollection ExportSettings_ReferenceId( return self; } - public static SqlOrderByCollection ExportSettings_Title( + public static SqlOrderByCollection Depts_Ver( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"Title\"" }.ForEach(columnBracket => + new List { "\"Ver\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33849,14 +30407,14 @@ public static SqlOrderByCollection ExportSettings_Title( return self; } - public static SqlOrderByCollection ExportSettings_ExportSettingId( + public static SqlOrderByCollection Depts_DeptCode( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"ExportSettingId\"" }.ForEach(columnBracket => + new List { "\"DeptCode\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33866,14 +30424,31 @@ public static SqlOrderByCollection ExportSettings_ExportSettingId( return self; } - public static SqlOrderByCollection ExportSettings_Ver( + public static SqlOrderByCollection Depts_Dept( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"Ver\"" }.ForEach(columnBracket => + new List { "\"DeptId\"" }.ForEach(columnBracket => + self.Add( + columnBracket: columnBracket, + orderType: orderType, + tableName: tableName, + isNullValue: isNullValue, + function: function)); + return self; + } + + public static SqlOrderByCollection Depts_DeptName( + this SqlOrderByCollection self, + SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, + string tableName = "Depts", + string isNullValue = null, + Sqls.Functions function = Sqls.Functions.None) + { + new List { "\"DeptName\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33883,14 +30458,14 @@ public static SqlOrderByCollection ExportSettings_Ver( return self; } - public static SqlOrderByCollection ExportSettings_AddHeader( + public static SqlOrderByCollection Depts_Body( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"AddHeader\"" }.ForEach(columnBracket => + new List { "\"Body\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33900,14 +30475,14 @@ public static SqlOrderByCollection ExportSettings_AddHeader( return self; } - public static SqlOrderByCollection ExportSettings_ExportColumns( + public static SqlOrderByCollection Depts_Disabled( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { - new List { "\"ExportColumns\"" }.ForEach(columnBracket => + new List { "\"Disabled\"" }.ForEach(columnBracket => self.Add( columnBracket: columnBracket, orderType: orderType, @@ -33917,10 +30492,10 @@ public static SqlOrderByCollection ExportSettings_ExportColumns( return self; } - public static SqlOrderByCollection ExportSettings_Comments( + public static SqlOrderByCollection Depts_Comments( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -33934,10 +30509,10 @@ public static SqlOrderByCollection ExportSettings_Comments( return self; } - public static SqlOrderByCollection ExportSettings_Creator( + public static SqlOrderByCollection Depts_Creator( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -33951,10 +30526,10 @@ public static SqlOrderByCollection ExportSettings_Creator( return self; } - public static SqlOrderByCollection ExportSettings_Updator( + public static SqlOrderByCollection Depts_Updator( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -33968,10 +30543,10 @@ public static SqlOrderByCollection ExportSettings_Updator( return self; } - public static SqlOrderByCollection ExportSettings_CreatedTime( + public static SqlOrderByCollection Depts_CreatedTime( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -33985,10 +30560,10 @@ public static SqlOrderByCollection ExportSettings_CreatedTime( return self; } - public static SqlOrderByCollection ExportSettings_UpdatedTime( + public static SqlOrderByCollection Depts_UpdatedTime( this SqlOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc, - string tableName = "ExportSettings", + string tableName = "Depts", string isNullValue = null, Sqls.Functions function = Sqls.Functions.None) { @@ -34002,8 +30577,8 @@ public static SqlOrderByCollection ExportSettings_UpdatedTime( return self; } - public static ExportSettingsOrderByCollection ExportSettingsCount( - this ExportSettingsOrderByCollection self, + public static DeptsOrderByCollection DeptsCount( + this DeptsOrderByCollection self, SqlOrderBy.Types orderType = SqlOrderBy.Types.asc) { return self.Add( @@ -34012,8 +30587,8 @@ public static ExportSettingsOrderByCollection ExportSettingsCount( function: Sqls.Functions.Count); } - public static ExportSettingsParamCollection ReferenceType( - this ExportSettingsParamCollection self, + public static DeptsParamCollection TenantId( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34021,15 +30596,15 @@ public static ExportSettingsParamCollection ReferenceType( { return _using ? self.Add( - columnBracket: "\"ReferenceType\"", - name: "ReferenceType", + columnBracket: "\"TenantId\"", + name: "TenantId", value: value, sub: sub, raw: raw) : self; } - public static SqlParamCollection ExportSettings_ReferenceType( + public static SqlParamCollection Depts_TenantId( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34038,16 +30613,16 @@ public static SqlParamCollection ExportSettings_ReferenceType( { return _using ? self.Add( - columnBracket: "\"ReferenceType\"", - name: "ReferenceType", + columnBracket: "\"TenantId\"", + name: "TenantId", value: value, sub: sub, raw: raw) : self; } - public static ExportSettingsParamCollection ReferenceId( - this ExportSettingsParamCollection self, + public static DeptsParamCollection DeptId( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34055,15 +30630,15 @@ public static ExportSettingsParamCollection ReferenceId( { return _using ? self.Add( - columnBracket: "\"ReferenceId\"", - name: "ReferenceId", + columnBracket: "\"DeptId\"", + name: "DeptId", value: value, sub: sub, raw: raw) : self; } - public static SqlParamCollection ExportSettings_ReferenceId( + public static SqlParamCollection Depts_DeptId( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34072,16 +30647,16 @@ public static SqlParamCollection ExportSettings_ReferenceId( { return _using ? self.Add( - columnBracket: "\"ReferenceId\"", - name: "ReferenceId", + columnBracket: "\"DeptId\"", + name: "DeptId", value: value, sub: sub, raw: raw) : self; } - public static ExportSettingsParamCollection Title( - this ExportSettingsParamCollection self, + public static DeptsParamCollection Ver( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34089,15 +30664,15 @@ public static ExportSettingsParamCollection Title( { return _using ? self.Add( - columnBracket: "\"Title\"", - name: "Title", + columnBracket: "\"Ver\"", + name: "Ver", value: value, sub: sub, raw: raw) : self; } - public static SqlParamCollection ExportSettings_Title( + public static SqlParamCollection Depts_Ver( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34106,16 +30681,16 @@ public static SqlParamCollection ExportSettings_Title( { return _using ? self.Add( - columnBracket: "\"Title\"", - name: "Title", + columnBracket: "\"Ver\"", + name: "Ver", value: value, sub: sub, raw: raw) : self; } - public static ExportSettingsParamCollection ExportSettingId( - this ExportSettingsParamCollection self, + public static DeptsParamCollection DeptCode( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34123,15 +30698,15 @@ public static ExportSettingsParamCollection ExportSettingId( { return _using ? self.Add( - columnBracket: "\"ExportSettingId\"", - name: "ExportSettingId", + columnBracket: "\"DeptCode\"", + name: "DeptCode", value: value, sub: sub, raw: raw) : self; } - public static SqlParamCollection ExportSettings_ExportSettingId( + public static SqlParamCollection Depts_DeptCode( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34140,16 +30715,16 @@ public static SqlParamCollection ExportSettings_ExportSettingId( { return _using ? self.Add( - columnBracket: "\"ExportSettingId\"", - name: "ExportSettingId", + columnBracket: "\"DeptCode\"", + name: "DeptCode", value: value, sub: sub, raw: raw) : self; } - public static ExportSettingsParamCollection Ver( - this ExportSettingsParamCollection self, + public static DeptsParamCollection DeptName( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34157,15 +30732,15 @@ public static ExportSettingsParamCollection Ver( { return _using ? self.Add( - columnBracket: "\"Ver\"", - name: "Ver", + columnBracket: "\"DeptName\"", + name: "DeptName", value: value, sub: sub, raw: raw) : self; } - public static SqlParamCollection ExportSettings_Ver( + public static SqlParamCollection Depts_DeptName( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34174,16 +30749,16 @@ public static SqlParamCollection ExportSettings_Ver( { return _using ? self.Add( - columnBracket: "\"Ver\"", - name: "Ver", + columnBracket: "\"DeptName\"", + name: "DeptName", value: value, sub: sub, raw: raw) : self; } - public static ExportSettingsParamCollection AddHeader( - this ExportSettingsParamCollection self, + public static DeptsParamCollection Body( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34191,15 +30766,15 @@ public static ExportSettingsParamCollection AddHeader( { return _using ? self.Add( - columnBracket: "\"AddHeader\"", - name: "AddHeader", + columnBracket: "\"Body\"", + name: "Body", value: value, sub: sub, raw: raw) : self; } - public static SqlParamCollection ExportSettings_AddHeader( + public static SqlParamCollection Depts_Body( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34208,16 +30783,16 @@ public static SqlParamCollection ExportSettings_AddHeader( { return _using ? self.Add( - columnBracket: "\"AddHeader\"", - name: "AddHeader", + columnBracket: "\"Body\"", + name: "Body", value: value, sub: sub, raw: raw) : self; } - public static ExportSettingsParamCollection ExportColumns( - this ExportSettingsParamCollection self, + public static DeptsParamCollection Disabled( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34225,15 +30800,15 @@ public static ExportSettingsParamCollection ExportColumns( { return _using ? self.Add( - columnBracket: "\"ExportColumns\"", - name: "ExportColumns", + columnBracket: "\"Disabled\"", + name: "Disabled", value: value, sub: sub, raw: raw) : self; } - public static SqlParamCollection ExportSettings_ExportColumns( + public static SqlParamCollection Depts_Disabled( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34242,16 +30817,16 @@ public static SqlParamCollection ExportSettings_ExportColumns( { return _using ? self.Add( - columnBracket: "\"ExportColumns\"", - name: "ExportColumns", + columnBracket: "\"Disabled\"", + name: "Disabled", value: value, sub: sub, raw: raw) : self; } - public static ExportSettingsParamCollection Comments( - this ExportSettingsParamCollection self, + public static DeptsParamCollection Comments( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34267,7 +30842,7 @@ public static ExportSettingsParamCollection Comments( : self; } - public static SqlParamCollection ExportSettings_Comments( + public static SqlParamCollection Depts_Comments( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34284,8 +30859,8 @@ public static SqlParamCollection ExportSettings_Comments( : self; } - public static ExportSettingsParamCollection Creator( - this ExportSettingsParamCollection self, + public static DeptsParamCollection Creator( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34301,7 +30876,7 @@ public static ExportSettingsParamCollection Creator( : self; } - public static SqlParamCollection ExportSettings_Creator( + public static SqlParamCollection Depts_Creator( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34318,8 +30893,8 @@ public static SqlParamCollection ExportSettings_Creator( : self; } - public static ExportSettingsParamCollection Updator( - this ExportSettingsParamCollection self, + public static DeptsParamCollection Updator( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34335,7 +30910,7 @@ public static ExportSettingsParamCollection Updator( : self; } - public static SqlParamCollection ExportSettings_Updator( + public static SqlParamCollection Depts_Updator( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34352,8 +30927,8 @@ public static SqlParamCollection ExportSettings_Updator( : self; } - public static ExportSettingsParamCollection CreatedTime( - this ExportSettingsParamCollection self, + public static DeptsParamCollection CreatedTime( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34369,7 +30944,7 @@ public static ExportSettingsParamCollection CreatedTime( : self; } - public static SqlParamCollection ExportSettings_CreatedTime( + public static SqlParamCollection Depts_CreatedTime( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -34386,8 +30961,8 @@ public static SqlParamCollection ExportSettings_CreatedTime( : self; } - public static ExportSettingsParamCollection UpdatedTime( - this ExportSettingsParamCollection self, + public static DeptsParamCollection UpdatedTime( + this DeptsParamCollection self, object value = null, SqlStatement sub = null, string raw = null, @@ -34403,7 +30978,7 @@ public static ExportSettingsParamCollection UpdatedTime( : self; } - public static SqlParamCollection ExportSettings_UpdatedTime( + public static SqlParamCollection Depts_UpdatedTime( this SqlParamCollection self, object value = null, SqlStatement sub = null, @@ -128250,144 +124825,6 @@ public static DeptsParamCollection DeptsParamDefault( return param; } - public static ExportSettingsColumnCollection ExportSettingsDefaultColumns() - { - var targets = Def.ColumnDefinitionCollection - .Where(columnDefinition => columnDefinition.TableName == "ExportSettings") - .Where(columnDefinition => !columnDefinition.LowSchemaVersion()) - .Select(columnDefinition => columnDefinition.ColumnName) - .ToList(); - var column = ExportSettingsColumn() - .ReferenceType(_using: targets.Contains("ReferenceType")) - .ReferenceId(_using: targets.Contains("ReferenceId")) - .Title(_using: targets.Contains("Title")) - .ExportSettingId(_using: targets.Contains("ExportSettingId")) - .Ver(_using: targets.Contains("Ver")) - .AddHeader(_using: targets.Contains("AddHeader")) - .ExportColumns(_using: targets.Contains("ExportColumns")) - .Comments(_using: targets.Contains("Comments")) - .Creator(_using: targets.Contains("Creator")) - .Updator(_using: targets.Contains("Updator")) - .CreatedTime(_using: targets.Contains("CreatedTime")) - .UpdatedTime(_using: targets.Contains("UpdatedTime")); - Def.ColumnDefinitionCollection - .Where(columnDefinition => columnDefinition.TableName == "ExportSettings") - .Where(columnDefinition => !columnDefinition.ExtendedColumnType.IsNullOrEmpty()) - .ForEach(columnDefinition => - column.ExportSettingsColumn(columnDefinition.ColumnName)); - return column; - } - - public static ExportSettingsJoinCollection ExportSettingsJoinDefault() - { - var join = ExportSettingsJoin(); - return join; - } - - public static ExportSettingsWhereCollection ExportSettingsWhereDefault( - Context context, ExportSettingModel exportSettingModel) - { - return ExportSettingsWhere() - .ReferenceId(exportSettingModel.ReferenceId) - .Title(exportSettingModel.Title.Value.MaxLength(1024)) - .ExportSettingId(exportSettingModel.ExportSettingId); - } - - public static ExportSettingsParamCollection ExportSettingsParamDefault( - Context context, - SiteSettings ss, - ExportSettingModel exportSettingModel, - bool setDefault = false, - bool otherInitValue = false) - { - var param = ExportSettingsParam() - .ReferenceType(exportSettingModel.ReferenceType.MaxLength(32), _using: exportSettingModel.ReferenceType_Updated(context) || setDefault || (otherInitValue && !exportSettingModel.ReferenceType.InitialValue(context))) - .ReferenceId(exportSettingModel.ReferenceId, _using: exportSettingModel.ReferenceId_Updated(context) || setDefault || (otherInitValue && !exportSettingModel.ReferenceId.InitialValue(context))) - .Title(exportSettingModel.Title.Value.MaxLength(1024), _using: exportSettingModel.Title_Updated(context) || setDefault || (otherInitValue && !exportSettingModel.Title.InitialValue(context))) - .Ver(exportSettingModel.Ver, _using: exportSettingModel.Ver_Updated(context) || setDefault || (otherInitValue && !exportSettingModel.Ver.InitialValue(context))) - .AddHeader(exportSettingModel.AddHeader, _using: exportSettingModel.AddHeader_Updated(context) || setDefault || (otherInitValue && !exportSettingModel.AddHeader.InitialValue(context))) - .ExportColumns(exportSettingModel.ExportColumns.ToJson(), _using: exportSettingModel.ExportColumns_Updated(context) || setDefault || (otherInitValue && !exportSettingModel.ExportColumns.InitialValue(context))) - .Comments(exportSettingModel.Comments.ToJson(), _using: exportSettingModel.Comments_Updated(context) || (otherInitValue && !exportSettingModel.Comments.InitialValue(context))); - exportSettingModel.ClassHash - .Where(o => Def.ExtendedColumnTypes.Get(o.Key) == "Class") - .Where(o => exportSettingModel.Class_Updated(columnName: o.Key) - || (otherInitValue && !exportSettingModel.GetClass(columnName: o.Key) - .InitialValue(context: context))) - .ForEach(o => - param.Add( - columnBracket: $"\"{o.Key}\"", - name: o.Key, - value: o.Value.MaxLength(1024))); - exportSettingModel.NumHash - .Where(o => Def.ExtendedColumnTypes.Get(o.Key) == "Num") - .Where(o => exportSettingModel.Num_Updated( - columnName: o.Key, - column: ss?.GetColumn( - context: context, - columnName: o.Key), - paramDefault: true) - || (otherInitValue && !exportSettingModel.GetNum(columnName: o.Key) - .InitialValue(context: context))) - .ForEach(o => - { - if (o.Value?.Value != null) - { - param.Add( - columnBracket: $"\"{o.Key}\"", - name: o.Key, - value: o.Value.Value); - } - else - { - param.Add( - columnBracket: $"\"{o.Key}\"", - name: o.Key, - raw: "null"); - } - }); - exportSettingModel.DateHash - .Where(o => Def.ExtendedColumnTypes.Get(o.Key) == "Date") - .Where(o => exportSettingModel.Date_Updated(columnName: o.Key) - || (otherInitValue && !exportSettingModel.GetDate(columnName: o.Key) - .InitialValue(context: context))) - .ForEach(o => - param.Add( - columnBracket: $"\"{o.Key}\"", - name: o.Key, - value: o.Value)); - exportSettingModel.DescriptionHash - .Where(o => Def.ExtendedColumnTypes.Get(o.Key) == "Description") - .Where(o => exportSettingModel.Description_Updated(columnName: o.Key) - || (otherInitValue && !exportSettingModel.GetDescription(columnName: o.Key) - .InitialValue(context: context))) - .ForEach(o => - param.Add( - columnBracket: $"\"{o.Key}\"", - name: o.Key, - value: o.Value ?? string.Empty)); - exportSettingModel.CheckHash - .Where(o => Def.ExtendedColumnTypes.Get(o.Key) == "Check") - .Where(o => exportSettingModel.Check_Updated(columnName: o.Key) - || (otherInitValue && !exportSettingModel.GetCheck(columnName: o.Key) - .InitialValue(context: context))) - .ForEach(o => - param.Add( - columnBracket: $"\"{o.Key}\"", - name: o.Key, - value: o.Value)); - exportSettingModel.AttachmentsHash - .Where(o => Def.ExtendedColumnTypes.Get(o.Key) == "Attachments") - .Where(o => exportSettingModel.Attachments_Updated(columnName: o.Key) - || (otherInitValue && !exportSettingModel.GetAttachments(columnName: o.Key) - .InitialValue(context: context))) - .ForEach(o => - param.Add( - columnBracket: $"\"{o.Key}\"", - name: o.Key, - value: o.Value?.RecordingJson() ?? string.Empty)); - return param; - } - public static ExtensionsColumnCollection ExtensionsDefaultColumns() { var targets = Def.ColumnDefinitionCollection diff --git a/Implem.Pleasanter/Libraries/DataTypes/Attachment.cs b/Implem.Pleasanter/Libraries/DataTypes/Attachment.cs index a1db3009d..24248b46f 100644 --- a/Implem.Pleasanter/Libraries/DataTypes/Attachment.cs +++ b/Implem.Pleasanter/Libraries/DataTypes/Attachment.cs @@ -307,6 +307,21 @@ public void SetHashCode( Column column, byte[] bin = null) { + static string GetAlgorithmParam() + { + switch (Parameters.Rds.Dbms) + { + case "SQLServer": + return "sha2_256"; + case "PostgreSQL": + return "sha256"; + case "MySQL": + return string.Empty; + default: + return string.Empty; + } + } + if (IsStoreLocalFolder(column)) { var tempFile = Path.Combine( @@ -332,11 +347,9 @@ public void SetHashCode( var hash = Repository.ExecuteScalar_bytes( context: context, statements: new SqlStatement( - commandText: context.Sqls.GetBinaryHash, + commandText: context.Sqls.GetBinaryHash(algorithm: "sha256"), param: new SqlParamCollection{ - { "Algorithm", Parameters.Rds.Dbms == "SQLServer" - ? "sha2_256" - : "sha256" }, + { "Algorithm", GetAlgorithmParam() }, { "Guid", Guid } })); HashCode = System.Convert.ToBase64String(hash); diff --git a/Implem.Pleasanter/Libraries/Html/HtmlAttributes.cs b/Implem.Pleasanter/Libraries/Html/HtmlAttributes.cs index 794ce1745..6ac2912ec 100644 --- a/Implem.Pleasanter/Libraries/Html/HtmlAttributes.cs +++ b/Implem.Pleasanter/Libraries/Html/HtmlAttributes.cs @@ -735,5 +735,24 @@ public HtmlAttributes DataTooltip(string value, bool _using = true) } return this; } + public HtmlAttributes DataLang(string value, bool _using = true) + { + if (!value.IsNullOrEmpty() && _using) + { + Add("data-lang"); + Add(value); + } + return this; + } + + public HtmlAttributes Crossorigin(bool value, bool _using = true) + { + if (value && _using) + { + Add("crossorigin"); + } + return this; + } + } } \ No newline at end of file diff --git a/Implem.Pleasanter/Libraries/Html/HtmlTypes.cs b/Implem.Pleasanter/Libraries/Html/HtmlTypes.cs index 6ec3f5dac..b6da3fae8 100644 --- a/Implem.Pleasanter/Libraries/Html/HtmlTypes.cs +++ b/Implem.Pleasanter/Libraries/Html/HtmlTypes.cs @@ -8,7 +8,8 @@ public enum TextTypes DateTime, MultiLine, Password, - File + File, + CodeEditor } } } \ No newline at end of file diff --git a/Implem.Pleasanter/Libraries/HtmlParts/HtmlAssemblyVersions.cs b/Implem.Pleasanter/Libraries/HtmlParts/HtmlAssemblyVersions.cs index eff9abc22..70ff97146 100644 --- a/Implem.Pleasanter/Libraries/HtmlParts/HtmlAssemblyVersions.cs +++ b/Implem.Pleasanter/Libraries/HtmlParts/HtmlAssemblyVersions.cs @@ -125,10 +125,11 @@ private static string DatabaseSize(Context context) context: context, connectionString: Parameters.Rds.OwnerConnectionString, statements: new SqlStatement( - commandText: Def.Sql.Spaceused)) - .AsEnumerable() - .FirstOrDefault() - .String("database_size"); + commandText: Def.Sql.Spaceused + .Replace("#InitialCatalog#", Environments.ServiceName))) + .AsEnumerable() + .FirstOrDefault() + .String("database_size"); } catch (Exception) { diff --git a/Implem.Pleasanter/Libraries/HtmlParts/HtmlControls.cs b/Implem.Pleasanter/Libraries/HtmlParts/HtmlControls.cs index a465f3454..e5d376e44 100644 --- a/Implem.Pleasanter/Libraries/HtmlParts/HtmlControls.cs +++ b/Implem.Pleasanter/Libraries/HtmlParts/HtmlControls.cs @@ -26,6 +26,7 @@ public static HtmlBuilder TextBox( bool alwaysSend = false, string accept = null, string dataId = null, + string dataLang = null, string onChange = null, string autoComplete = null, bool openAnchorNewTab = false, @@ -144,6 +145,29 @@ public static HtmlBuilder TextBox( .DataMethod(method) .Add(attributes), text: text); + case HtmlTypes.TextTypes.CodeEditor: + return hb.CodeEditor( + attributes: new HtmlAttributes() + .Id(controlId) + .Name(controlId) + .Class(controlCss) + .Placeholder(placeholder) + .Disabled(disabled) + .DataAlwaysSend(alwaysSend) + .DataId(dataId) + .OnChange(onChange) + .AutoComplete(autoComplete) + .DataValidateRequired(validateRequired) + .DataValidateNumber(validateNumber) + .DataValidateDate(validateDate) + .DataValidateEmail(validateEmail) + .DataValidateEqualTo(validateEqualTo) + .DataValidateMaxLength(validateMaxLength) + .DataAction(action) + .DataMethod(method) + .DataLang(dataLang) + .Add(attributes), + text: text); case HtmlTypes.TextTypes.Password: return hb.Input(attributes: new HtmlAttributes() .Id(controlId) diff --git a/Implem.Pleasanter/Libraries/HtmlParts/HtmlFields.cs b/Implem.Pleasanter/Libraries/HtmlParts/HtmlFields.cs index 7afb86a29..4c0134c2b 100644 --- a/Implem.Pleasanter/Libraries/HtmlParts/HtmlFields.cs +++ b/Implem.Pleasanter/Libraries/HtmlParts/HtmlFields.cs @@ -1196,6 +1196,7 @@ public static HtmlBuilder FieldTextBox( string validateRegexErrorMessage = null, string action = null, string method = null, + string dataLang = null, Dictionary attributes = null, string extendedHtmlBeforeLabel = null, string extendedHtmlBetweenLabelAndControl = null, @@ -1249,6 +1250,7 @@ public static HtmlBuilder FieldTextBox( validateRegexErrorMessage: validateRegexErrorMessage, action: action, method: method, + dataLang: dataLang, attributes: attributes); if (textType == HtmlTypes.TextTypes.Password) { @@ -1390,6 +1392,88 @@ public static HtmlBuilder FieldMarkUp( : hb; } + public static HtmlBuilder FieldCodeEditor( + this HtmlBuilder hb, + Context context, + string fieldId = null, + string controlId = null, + string fieldCss = null, + string fieldDescription = null, + string labelCss = null, + string controlContainerCss = null, + string controlCss = null, + string labelText = null, + string placeholder = null, + string labelRaw = null, + string labelTitle = null, + string labelIcon = null, + bool controlOnly = false, + string unit = null, + string text = null, + bool alwaysSend = false, + string onChange = null, + bool validateRequired = false, + bool validateNumber = false, + bool validateDate = false, + bool validateEmail = false, + string validateEqualTo = null, + int validateMaxLength = 0, + string action = null, + string method = null, + string dataLang = null, + Dictionary attributes = null, + string extendedHtmlBeforeLabel = null, + string extendedHtmlBetweenLabelAndControl = null, + string extendedHtmlAfterControl = null, + bool _using = true) + { + var textType = context.ThemeVersionForCss() >= 2.0M && Parameters.General.EnableCodeEditor + ? HtmlTypes.TextTypes.CodeEditor + : HtmlTypes.TextTypes.MultiLine; + return _using + ? hb.Field( + fieldId: fieldId, + controlId: controlId, + fieldCss: fieldCss, + fieldDescription: fieldDescription, + labelCss: labelCss, + controlContainerCss: controlContainerCss, + labelText: labelText, + labelRaw: labelRaw, + labelTitle: labelTitle, + labelIcon: labelIcon, + controlOnly: controlOnly, + validateRequired: validateRequired, + extendedHtmlBeforeLabel: extendedHtmlBeforeLabel, + extendedHtmlBetweenLabelAndControl: extendedHtmlBetweenLabelAndControl, + extendedHtmlAfterControl: extendedHtmlAfterControl, + controlAction: () => + { + hb.TextBox( + textType: textType, + controlId: controlId, + controlCss: controlCss + + (!unit.IsNullOrEmpty() + ? " with-unit" + : string.Empty), + text: text, + placeholder: placeholder, + alwaysSend: alwaysSend, + onChange: onChange, + validateRequired: validateRequired, + validateNumber: validateNumber, + validateDate: validateDate, + validateEmail: validateEmail, + validateEqualTo: validateEqualTo, + validateMaxLength: validateMaxLength, + action: action, + method: method, + dataLang: dataLang, + attributes: attributes); + }) + : hb; + } + public static HtmlBuilder FieldDropDown( this HtmlBuilder hb, Context context, diff --git a/Implem.Pleasanter/Libraries/HtmlParts/HtmlHeadLinks.cs b/Implem.Pleasanter/Libraries/HtmlParts/HtmlHeadLinks.cs new file mode 100644 index 000000000..f8fc652af --- /dev/null +++ b/Implem.Pleasanter/Libraries/HtmlParts/HtmlHeadLinks.cs @@ -0,0 +1,89 @@ +using Implem.DefinitionAccessor; +using Implem.Libraries.Utilities; +using Implem.ParameterAccessor.Parts; +using Implem.Pleasanter.Libraries.Html; +using Implem.Pleasanter.Libraries.Requests; +using Implem.Pleasanter.Libraries.Settings; +using Implem.Pleasanter.Models; +using System.Collections.Generic; +using System.Linq; +namespace Implem.Pleasanter.Libraries.HtmlParts +{ + public static class HtmlHeadLink + { + public static HtmlBuilder ExtendedHeadLinks(this HtmlBuilder hb, Context context) + { + var extendedHeadLinks = ExtendedHeadLinks(context: context); + return hb + .Link( + href: Responses.Locations.Get( + context: context, + parts: $"resources/styles?v={extendedHeadLinks.Sha512Cng()}" + + $"&site-id={context.SiteId}" + + $"&id={context.Id}" + + $"&controller={context.Controller}" + + $"&action={context.Action}"), + _using: !extendedHeadLinks.IsNullOrEmpty()); + } + + private static string ExtendedHeadLinks(Context context) + { + return ExtendedHeadLinks( + context: context, + deptId: context.DeptId, + groups: context.Groups, + userId: context.UserId, + siteTop: context.SiteTop(), + siteId: context.SiteId, + id: context.Id, + controller: context.Controller, + action: context.Action); + } + + public static string ExtendedHeadLinks( + Context context, + int deptId, + List groups, + int userId, + bool siteTop, + long siteId, + long id, + string controller, + string action) + { + var styles = (siteTop && !context.TopStyle.IsNullOrEmpty() + ? context.TopStyle + '\n' + : string.Empty) + + ExtensionUtilities.ExtensionWhere( + extensions: Parameters.ExtendedHeadLinks, + name: null, + deptId: deptId, + groups: groups, + userId: userId, + siteId: siteId, + id: id, + controller: controller, + action: action) + .Select(o => o.Style) + .Join("\n"); + return styles; + } + + public static HtmlBuilder LinkedHeadLink( + this HtmlBuilder hb, Context context, SiteSettings ss) + { + return hb + .Link( + href: Responses.Locations.Get( + context: context, + parts: "favicon.ico"), + rel: "shortcut icon") + .Link( + href: Responses.Locations.Get( + context: context, + parts: "scripts/plugins/vendor.bundle.js"), + rel: "modulepreload", + crossorigin: true); + } + } +} \ No newline at end of file diff --git a/Implem.Pleasanter/Libraries/HtmlParts/HtmlScripts.cs b/Implem.Pleasanter/Libraries/HtmlParts/HtmlScripts.cs index 4f9ae04b1..5847d09d4 100644 --- a/Implem.Pleasanter/Libraries/HtmlParts/HtmlScripts.cs +++ b/Implem.Pleasanter/Libraries/HtmlParts/HtmlScripts.cs @@ -89,6 +89,13 @@ public static HtmlBuilder Scripts( .Script(src: Responses.Locations.Get( context: context, parts: "Scripts/Plugins/qrcode.min.js")) + .Script(src: + Responses.Locations.Get( + context: context, + parts: "scripts/plugins/components.bundle.js"), + type: "module", + crossorigin: true + ) .Generals(context: context) .Script( src: Responses.Locations.Get( @@ -117,7 +124,7 @@ public static HtmlBuilder Scripts( && context.Action == "index") .Script(script: "$p.setCalendar();", _using: ss.ReferenceType == "Dashboards" && - ss.DashboardParts?.Any(part=>part.Type == DashboardPartType.Calendar) == true) + ss.DashboardParts?.Any(part => part.Type == DashboardPartType.Calendar) == true) .Script(script: "$p.setKamban();", _using: ss.ReferenceType == "Dashboards" && ss.DashboardParts?.Any(part => part.Type == DashboardPartType.Kamban) == true) diff --git a/Implem.Pleasanter/Libraries/HtmlParts/HtmlStyles.cs b/Implem.Pleasanter/Libraries/HtmlParts/HtmlStyles.cs index fb6958746..c9b5080d1 100644 --- a/Implem.Pleasanter/Libraries/HtmlParts/HtmlStyles.cs +++ b/Implem.Pleasanter/Libraries/HtmlParts/HtmlStyles.cs @@ -158,12 +158,7 @@ public static HtmlBuilder LinkedStyles( _using: Parameters.Mobile.Responsive && context.Mobile && context.Responsive - && (ss == null || ss.Responsive != false)) - .Link( - href: Responses.Locations.Get( - context: context, - parts: "favicon.ico"), - rel: "shortcut icon"); + && (ss == null || ss.Responsive != false)); } } } \ No newline at end of file diff --git a/Implem.Pleasanter/Libraries/HtmlParts/HtmlTags.cs b/Implem.Pleasanter/Libraries/HtmlParts/HtmlTags.cs index afb66785b..1f54f576e 100644 --- a/Implem.Pleasanter/Libraries/HtmlParts/HtmlTags.cs +++ b/Implem.Pleasanter/Libraries/HtmlParts/HtmlTags.cs @@ -56,7 +56,8 @@ public static HtmlBuilder Link( this HtmlBuilder hb, string href = null, string rel = null, - bool _using = true) + bool _using = true, + bool crossorigin =false) { return _using ? hb.Append( @@ -64,7 +65,8 @@ public static HtmlBuilder Link( closeLevel: 1, attributes: new HtmlAttributes() .Href(href) - .Rel(rel)) + .Rel(rel) + .Crossorigin(crossorigin)) : hb; } @@ -743,23 +745,65 @@ public static HtmlBuilder Style( .Raw(text: style)) : hb; } + public static HtmlBuilder HeadLink( + this HtmlBuilder hb, + string src = null, + string type = null, + bool _using = true) + { + return _using + ? hb.Append( + tag: "style", + attributes: new HtmlAttributes() + .Src(src) + .Type(type)) + : hb; + } public static HtmlBuilder Script( this HtmlBuilder hb, string id = null, string src = null, string script = null, - bool _using = true) + bool _using = true, + string type = null, + bool crossorigin = false) { return _using ? hb.Append( tag: "script", id: id, css: null, - attributes: new HtmlAttributes().Src(src), + attributes: new HtmlAttributes() + .Src(src) + .Type(type) + .Crossorigin(crossorigin), action: () => hb .Raw(text: script)) : hb; } + + public static HtmlBuilder CodeEditor( + this HtmlBuilder hb, + string id = null, + string name = null, + string css = null, + HtmlAttributes attributes = null, + bool _using = true, + string dataLang = null, + string text = null) + { + return _using + ? hb.Append( + tag: "code-editor", + attributes: (attributes ?? new HtmlAttributes()) + .Id(id) + .Name(name) + .Class(css) + .DataLang(dataLang), + action: () => hb + .Text(text: text)) + : hb; + } } } \ No newline at end of file diff --git a/Implem.Pleasanter/Libraries/HtmlParts/HtmlTemplates.cs b/Implem.Pleasanter/Libraries/HtmlParts/HtmlTemplates.cs index 24e0d1ffb..5bfb7020e 100644 --- a/Implem.Pleasanter/Libraries/HtmlParts/HtmlTemplates.cs +++ b/Implem.Pleasanter/Libraries/HtmlParts/HtmlTemplates.cs @@ -131,6 +131,9 @@ private static HtmlBuilder Container( .LinkedStyles( context: context, ss: ss) + .LinkedHeadLink( + context: context, + ss: ss) .ExtendedStyles(context: context) .Title(action: () => hb .Text(text: HtmlTitle.TitleText( diff --git a/Implem.Pleasanter/Libraries/Migrators/Statuses/Version00_039_022 .cs b/Implem.Pleasanter/Libraries/Migrators/Statuses/Version00_039_022 .cs deleted file mode 100644 index edede2bb2..000000000 --- a/Implem.Pleasanter/Libraries/Migrators/Statuses/Version00_039_022 .cs +++ /dev/null @@ -1,58 +0,0 @@ -using Implem.Libraries.Utilities; -using Implem.Pleasanter.Libraries.DataSources; -using Implem.Pleasanter.Libraries.Requests; -using Implem.Pleasanter.Libraries.Settings; -using Implem.Pleasanter.Models; -using System.Data; -using System.Linq; -namespace Implem.Pleasanter.Libraries.Migrators.Statuses -{ - public static class Version00_039_022 - { - public static void Migrate(Context context) - { - new ExportSettingCollection(context: context) - .ForEach(exportSettingModel => - Migrate(context: context, exportSettingModel: exportSettingModel)); - } - - private static void Migrate(Context context, ExportSettingModel exportSettingModel) - { - var ss = Repository.ExecuteScalar_string( - context: context, - statements: Rds.SelectSites( - column: Rds.SitesColumn().SiteSettings(), - where: Rds.SitesWhere().SiteId(exportSettingModel.ReferenceId))) - .DeserializeSiteSettings(context: context); - if (ss != null) - { - ss.SiteId = exportSettingModel.ReferenceId; - ss.Exports = ss.Exports ?? new SettingList(); - ss.Exports.Add(new Export( - id: ss.Exports.Any() - ? ss.Exports.Max(o => o.Id) + 1 - : 1, - type: Export.Types.Csv, - name: exportSettingModel.Title.Value, - header: exportSettingModel.AddHeader, - columns: exportSettingModel.ExportColumns.Columns - .Where(o => o.Value) - .Select((o, i) => new ExportColumn( - context: context, - column: ss.GetColumn( - context: context, - columnName: o.Key), - id: i + 1)) - .ToList(), - delimiterType: Export.DelimiterTypes.Comma, - encloseDoubleQuotes: true, - executionType: Export.ExecutionTypes.Direct)); - Repository.ExecuteNonQuery( - context: context, - statements: Rds.UpdateSites( - param: Rds.SitesParam().SiteSettings(ss.RecordingJson(context: context)), - where: Rds.SitesWhere().SiteId(exportSettingModel.ReferenceId))); - } - } - } -} \ No newline at end of file diff --git a/Implem.Pleasanter/Libraries/Migrators/StatusesMigrator.cs b/Implem.Pleasanter/Libraries/Migrators/StatusesMigrator.cs index 9e596ea8a..4a621ca1a 100644 --- a/Implem.Pleasanter/Libraries/Migrators/StatusesMigrator.cs +++ b/Implem.Pleasanter/Libraries/Migrators/StatusesMigrator.cs @@ -14,13 +14,6 @@ public static void Migrate(Context context) context: context, version: "0.37.10.0"); } - if (LowerThan(context: context, version: "0.39.22.0")) - { - Statuses.Version00_039_022.Migrate(context: context); - StatusUtilities.UpdateAssemblyVersion( - context: context, - version: "0.39.22.0"); - } if (LowerThan(context: context, version: "0.43.52.0")) { Statuses.Version00_043_052.Migrate(context: context); diff --git a/Implem.Pleasanter/Libraries/Resources/HeadLink.cs b/Implem.Pleasanter/Libraries/Resources/HeadLink.cs new file mode 100644 index 000000000..e9c1f80a2 --- /dev/null +++ b/Implem.Pleasanter/Libraries/Resources/HeadLink.cs @@ -0,0 +1,51 @@ +using Implem.Libraries.Utilities; +using Implem.Pleasanter.Libraries.HtmlParts; +using Implem.Pleasanter.Libraries.Requests; +using Implem.Pleasanter.Libraries.Responses; +namespace Implem.Pleasanter.Libraries.Resources +{ + public static class HeadLink + { + public static string Class(string _default, string additional) + { + if (additional.IsNullOrEmpty()) + { + return _default?.Trim(); + } + else if (_default?.EndsWith(" ") == true) + { + return (_default + additional).Trim(); + } + else if (additional.Substring(0, 1) == " ") + { + return (_default?.Trim() + additional).Trim(); + } + else + { + return additional; + } + } + + public static ContentResultInheritance Get(Context context) + { + var siteId = context.QueryStrings.Long("site-id"); + var id = context.QueryStrings.Long("id"); + var controller = context.QueryStrings.Data("controller"); + var action = context.QueryStrings.Data("action"); + var siteTop = siteId == 0 && id == 0 && controller == "items" && action == "index"; + return new ContentResultInheritance + { + Content = HtmlHeadLink.ExtendedHeadLinks( + context: context, + deptId: context.DeptId, + groups: context.Groups, + userId: context.UserId, + siteTop: siteTop, + siteId: siteId, + id: id, + controller: controller, + action: action) + }; + } + } +} \ No newline at end of file diff --git a/Implem.Pleasanter/Libraries/Responses/Displays.cs b/Implem.Pleasanter/Libraries/Responses/Displays.cs index 26edcbf41..2e37cd095 100644 --- a/Implem.Pleasanter/Libraries/Responses/Displays.cs +++ b/Implem.Pleasanter/Libraries/Responses/Displays.cs @@ -11429,66 +11429,6 @@ public static string Depts_Title( data: data); } - public static string ExportSettings_AddHeader( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_AddHeader", - data: data); - } - - public static string ExportSettings_ExportColumns( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_ExportColumns", - data: data); - } - - public static string ExportSettings_ExportSettingId( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_ExportSettingId", - data: data); - } - - public static string ExportSettings_ReferenceId( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_ReferenceId", - data: data); - } - - public static string ExportSettings_ReferenceType( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_ReferenceType", - data: data); - } - - public static string ExportSettings_Title( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_Title", - data: data); - } - public static string Extensions_Body( Context context, params string[] data) @@ -14789,86 +14729,6 @@ public static string Depts_VerUp( data: data); } - public static string ExportSettings_Comments( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_Comments", - data: data); - } - - public static string ExportSettings_CreatedTime( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_CreatedTime", - data: data); - } - - public static string ExportSettings_Creator( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_Creator", - data: data); - } - - public static string ExportSettings_Timestamp( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_Timestamp", - data: data); - } - - public static string ExportSettings_UpdatedTime( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_UpdatedTime", - data: data); - } - - public static string ExportSettings_Updator( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_Updator", - data: data); - } - - public static string ExportSettings_Ver( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_Ver", - data: data); - } - - public static string ExportSettings_VerUp( - Context context, - params string[] data) - { - return Get( - context: context, - id: "ExportSettings_VerUp", - data: data); - } - public static string Extensions_Comments( Context context, params string[] data) diff --git a/Implem.Pleasanter/Libraries/Responses/Locations.cs b/Implem.Pleasanter/Libraries/Responses/Locations.cs index be2e58cd8..c1a69fdfd 100644 --- a/Implem.Pleasanter/Libraries/Responses/Locations.cs +++ b/Implem.Pleasanter/Libraries/Responses/Locations.cs @@ -290,7 +290,7 @@ public static string OutGoingMailAbsoluteUri(Context context) public static string AbsoluteDirectUri(Context context) { return Parameters.Service.AbsoluteUri != null - ? $"{Parameters.Service.AbsoluteUri}/{context.Controller}/{context.Id}/index" + ? $"{Parameters.Service.AbsoluteUri}/{context.Controller}/{context.Id}/{context.Action}" : context.AbsoluteUri; } diff --git a/Implem.Pleasanter/Libraries/Responses/ResponseSpecials.cs b/Implem.Pleasanter/Libraries/Responses/ResponseSpecials.cs index f41bef5a5..1f4bfc5f2 100644 --- a/Implem.Pleasanter/Libraries/Responses/ResponseSpecials.cs +++ b/Implem.Pleasanter/Libraries/Responses/ResponseSpecials.cs @@ -100,30 +100,6 @@ public DeptsResponseCollection ValAndFormData(string selector, string value) } } - public class ExportSettingsResponseCollection : ResponseCollection - { - public ExportSettingModel ExportSettingModel; - - public ExportSettingsResponseCollection( - Context context, - ExportSettingModel exportSettingModel) : base(context: context) - { - ExportSettingModel = exportSettingModel; - } - - public ExportSettingsResponseCollection Val(string selector, string value) - { - base.Val(selector, value); - return this; - } - - public ExportSettingsResponseCollection ValAndFormData(string selector, string value) - { - base.ValAndFormData(selector, value); - return this; - } - } - public class ExtensionsResponseCollection : ResponseCollection { public ExtensionModel ExtensionModel; @@ -1754,446 +1730,6 @@ public static DeptsResponseCollection Timestamp_FormData( return res.ValAndFormData("#Depts_Timestamp", value); } - public static ExportSettingsResponseCollection ReferenceType( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_ReferenceType", - res.ExportSettingModel.ReferenceType.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "ReferenceType"))); - } - - public static ExportSettingsResponseCollection ReferenceType( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_ReferenceType", value); - } - - public static ExportSettingsResponseCollection ReferenceType_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_ReferenceType", - res.ExportSettingModel.ReferenceType.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "ReferenceType"))); - } - - public static ExportSettingsResponseCollection ReferenceType_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_ReferenceType", value); - } - - public static ExportSettingsResponseCollection ReferenceId( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_ReferenceId", - res.ExportSettingModel.ReferenceId.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "ReferenceId"))); - } - - public static ExportSettingsResponseCollection ReferenceId( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_ReferenceId", value); - } - - public static ExportSettingsResponseCollection ReferenceId_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_ReferenceId", - res.ExportSettingModel.ReferenceId.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "ReferenceId"))); - } - - public static ExportSettingsResponseCollection ReferenceId_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_ReferenceId", value); - } - - public static ExportSettingsResponseCollection Title( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_Title", - res.ExportSettingModel.Title.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "Title"))); - } - - public static ExportSettingsResponseCollection Title( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_Title", value); - } - - public static ExportSettingsResponseCollection Title_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_Title", - res.ExportSettingModel.Title.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "Title"))); - } - - public static ExportSettingsResponseCollection Title_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_Title", value); - } - - public static ExportSettingsResponseCollection ExportSettingId( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_ExportSettingId", - res.ExportSettingModel.ExportSettingId.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "ExportSettingId"))); - } - - public static ExportSettingsResponseCollection ExportSettingId( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_ExportSettingId", value); - } - - public static ExportSettingsResponseCollection ExportSettingId_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_ExportSettingId", - res.ExportSettingModel.ExportSettingId.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "ExportSettingId"))); - } - - public static ExportSettingsResponseCollection ExportSettingId_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_ExportSettingId", value); - } - - public static ExportSettingsResponseCollection Ver( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_Ver", - res.ExportSettingModel.Ver.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "Ver"))); - } - - public static ExportSettingsResponseCollection Ver( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_Ver", value); - } - - public static ExportSettingsResponseCollection Ver_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_Ver", - res.ExportSettingModel.Ver.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "Ver"))); - } - - public static ExportSettingsResponseCollection Ver_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_Ver", value); - } - - public static ExportSettingsResponseCollection AddHeader( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_AddHeader", - res.ExportSettingModel.AddHeader.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "AddHeader"))); - } - - public static ExportSettingsResponseCollection AddHeader( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_AddHeader", value); - } - - public static ExportSettingsResponseCollection AddHeader_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_AddHeader", - res.ExportSettingModel.AddHeader.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "AddHeader"))); - } - - public static ExportSettingsResponseCollection AddHeader_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_AddHeader", value); - } - - public static ExportSettingsResponseCollection Comments( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_Comments", - res.ExportSettingModel.Comments.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "Comments"))); - } - - public static ExportSettingsResponseCollection Comments( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_Comments", value); - } - - public static ExportSettingsResponseCollection Comments_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_Comments", - res.ExportSettingModel.Comments.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "Comments"))); - } - - public static ExportSettingsResponseCollection Comments_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_Comments", value); - } - - public static ExportSettingsResponseCollection CreatedTime( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_CreatedTime", - res.ExportSettingModel.CreatedTime.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "CreatedTime"))); - } - - public static ExportSettingsResponseCollection CreatedTime( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_CreatedTime", value); - } - - public static ExportSettingsResponseCollection CreatedTime_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_CreatedTime", - res.ExportSettingModel.CreatedTime.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "CreatedTime"))); - } - - public static ExportSettingsResponseCollection CreatedTime_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_CreatedTime", value); - } - - public static ExportSettingsResponseCollection UpdatedTime( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_UpdatedTime", - res.ExportSettingModel.UpdatedTime.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "UpdatedTime"))); - } - - public static ExportSettingsResponseCollection UpdatedTime( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_UpdatedTime", value); - } - - public static ExportSettingsResponseCollection UpdatedTime_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_UpdatedTime", - res.ExportSettingModel.UpdatedTime.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "UpdatedTime"))); - } - - public static ExportSettingsResponseCollection UpdatedTime_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_UpdatedTime", value); - } - - public static ExportSettingsResponseCollection Timestamp( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.Val( - "#ExportSettings_Timestamp", - res.ExportSettingModel.Timestamp.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "Timestamp"))); - } - - public static ExportSettingsResponseCollection Timestamp( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.Val("#ExportSettings_Timestamp", value); - } - - public static ExportSettingsResponseCollection Timestamp_FormData( - this ExportSettingsResponseCollection res, - Context context, - SiteSettings ss, - Column column = null) - { - return res.ValAndFormData( - "#ExportSettings_Timestamp", - res.ExportSettingModel.Timestamp.ToResponse( - context: context, - ss: ss, - column: column ?? ss.GetColumn( - context: context, - columnName: "Timestamp"))); - } - - public static ExportSettingsResponseCollection Timestamp_FormData( - this ExportSettingsResponseCollection res, Context context, string value) - { - return res.ValAndFormData("#ExportSettings_Timestamp", value); - } - public static ExtensionsResponseCollection Ver( this ExtensionsResponseCollection res, Context context, diff --git a/Implem.Pleasanter/Libraries/Search/Indexes.cs b/Implem.Pleasanter/Libraries/Search/Indexes.cs index 3df19a337..9099a916f 100644 --- a/Implem.Pleasanter/Libraries/Search/Indexes.cs +++ b/Implem.Pleasanter/Libraries/Search/Indexes.cs @@ -845,7 +845,7 @@ private static SqlWhereCollection FullTextWhere( .Add( raw: Def.Sql.CanRead, _using: !context.HasPrivilege && !context.Publish) - .Add(raw: $"{context.Sqls.IsNull}(\"Sites\".\"DisableCrossSearch\",'false')='false'") + .Add(raw: $"{context.Sqls.IsNull}(\"Sites\".\"DisableCrossSearch\",{context.Sqls.FalseString})={context.Sqls.FalseString}") .Add( raw: "\"Items\".\"ReferenceType\"<>'Sites'", _using: Parameters.Search.DisableCrossSearchSites); diff --git a/Implem.Pleasanter/Libraries/Settings/DashboardPart.cs b/Implem.Pleasanter/Libraries/Settings/DashboardPart.cs index 998c3a6ed..243e7e2bf 100644 --- a/Implem.Pleasanter/Libraries/Settings/DashboardPart.cs +++ b/Implem.Pleasanter/Libraries/Settings/DashboardPart.cs @@ -667,7 +667,7 @@ public void SetQuickAccessSites() } else { - QuickAccessSites = QuickAccessSitesData.Select(o => o.Id).Join("\n"); + QuickAccessSites = QuickAccessSitesData.Select(o => o.Id).Join(","); } } diff --git a/Implem.Pleasanter/Libraries/Settings/SiteSettingsUtilities.cs b/Implem.Pleasanter/Libraries/Settings/SiteSettingsUtilities.cs index 2533a594c..932ca0f07 100644 --- a/Implem.Pleasanter/Libraries/Settings/SiteSettingsUtilities.cs +++ b/Implem.Pleasanter/Libraries/Settings/SiteSettingsUtilities.cs @@ -128,7 +128,6 @@ public static SiteSettings GetByReference( case "binaries": return BinariesSiteSettings(context: context); case "demos": return DemosSiteSettings(context: context); case "depts": return DeptsSiteSettings(context: context); - case "exportsettings": return ExportSettingsSiteSettings(context: context); case "extensions": return ExtensionsSiteSettings(context: context); case "groupchildren": return GroupChildrenSiteSettings(context: context); case "groupmembers": return GroupMembersSiteSettings(context: context); @@ -203,17 +202,6 @@ public static SiteSettings DeptsSiteSettings(Context context, Sqls.TableTypes ta return ss; } - public static SiteSettings ExportSettingsSiteSettings(Context context, Sqls.TableTypes tableTypes = Sqls.TableTypes.Normal) - { - var ss = new SiteSettings() - { - ReferenceType = "ExportSettings" - }; - ss.Init(context: context); - ss.TableType = tableTypes; - return ss; - } - public static SiteSettings ExtensionsSiteSettings(Context context, Sqls.TableTypes tableTypes = Sqls.TableTypes.Normal) { var ss = new SiteSettings() diff --git a/Implem.Pleasanter/Libraries/Settings/View.cs b/Implem.Pleasanter/Libraries/Settings/View.cs index 5c6c42d5a..8d4bd9992 100644 --- a/Implem.Pleasanter/Libraries/Settings/View.cs +++ b/Implem.Pleasanter/Libraries/Settings/View.cs @@ -2499,7 +2499,7 @@ private static void AddEqWhere( switch (csType) { case Types.CsBool: - defaultValue = "'false'"; + defaultValue = context.Sqls.FalseString; break; case Types.CsNumeric: defaultValue = "0"; diff --git a/Implem.Pleasanter/Libraries/SitePackages/PackageSiteModel.cs b/Implem.Pleasanter/Libraries/SitePackages/PackageSiteModel.cs index 06c09e532..18d5ec1b0 100644 --- a/Implem.Pleasanter/Libraries/SitePackages/PackageSiteModel.cs +++ b/Implem.Pleasanter/Libraries/SitePackages/PackageSiteModel.cs @@ -201,8 +201,27 @@ internal SiteSettings GetSavedSiteSettings( : s) .ToList(); dashboardPart.SetTimeLineSites(); + dashboardPart.CalendarSitesData = dashboardPart.CalendarSitesData + ?.Select(s => + long.TryParse(s, out long siteId) + ? header.GetConvertedId(siteId).ToString() + : s) + .ToList(); dashboardPart.SetCalendarSites(); + dashboardPart.IndexSitesData = dashboardPart.IndexSitesData + ?.Select(s => + long.TryParse(s, out long siteId) + ? header.GetConvertedId(siteId).ToString() + : s) + .ToList(); dashboardPart.SetIndexSites(); + dashboardPart.KambanSitesData = dashboardPart.KambanSitesData + ?.Select(s => + long.TryParse(s, out long siteId) + ? header.GetConvertedId(siteId).ToString() + : s) + .ToList(); + dashboardPart.SetKambanSites(); }); ss.Views?.ForEach(view => { diff --git a/Implem.Pleasanter/Libraries/SitePackages/SitePackage.cs b/Implem.Pleasanter/Libraries/SitePackages/SitePackage.cs index d3fde6e8b..375ce32b0 100644 --- a/Implem.Pleasanter/Libraries/SitePackages/SitePackage.cs +++ b/Implem.Pleasanter/Libraries/SitePackages/SitePackage.cs @@ -11,6 +11,7 @@ using System.Data; using System.Linq; using System.Text; +using System.Text.RegularExpressions; namespace Implem.Pleasanter.Libraries.SitePackages { public class SitePackage @@ -250,6 +251,10 @@ public class Convertor public string Order; [NonSerialized] public long? SavedSiteId; + [NonSerialized] + public bool Updated; + [NonSerialized] + public SiteSettings SiteSettings; } internal void Add( @@ -302,27 +307,12 @@ public void ConvertDataId(Context context, Dictionary idHash) foreach (var conv in HeaderInfo.Convertors) { var savedSiteId = conv.SavedSiteId.ToLong(); - var ss = Rds.ExecuteScalar_string( - context: context, - statements: Rds.SelectSites( - column: Rds.SitesColumn().SiteSettings(), - where: Rds.SitesWhere() - .TenantId(context.TenantId) - .SiteId(savedSiteId))) - .Deserialize(); + var ss = conv.SiteSettings; ss?.Links ?.Where(link => link.SiteId > 0) .ForEach(link => { - var destinationType = Rds.ExecuteScalar_string( - context: context, - statements: Rds.SelectItems( - column: Rds.ItemsColumn().ReferenceType(), - where: Rds.ItemsWhere() - .SiteId(link.SiteId) - .ReferenceType("Sites", _operator: "!="), - top: 1)); - switch (destinationType) + switch (ss.ReferenceType) { case "Issues": case "Results": @@ -336,65 +326,67 @@ public void ConvertDataId(Context context, Dictionary idHash) break; } }); - var IsUpdated = false; ss?.Views? .ForEach(view => { - IsUpdated |= ConvertFilterHashDataId( + conv.Updated |= ConvertFilterHashDataId( + ss: ss, filterHash: view.ColumnFilterHash, idHash: idHash); }); ss?.StatusControls? .ForEach(statusControl => { - IsUpdated |= ConvertFilterHashDataId( + conv.Updated |= ConvertFilterHashDataId( + ss: ss, filterHash: statusControl.View?.ColumnFilterHash, idHash: idHash); }); ss?.Processes? .ForEach(process => { - IsUpdated |= ConvertFilterHashDataId( + conv.Updated |= ConvertFilterHashDataId( + ss: ss, filterHash: process.View?.ColumnFilterHash, idHash: idHash); }); - if(IsUpdated == true) - { - ss.Init(context: context); - Repository.ExecuteNonQuery( - context: context, - statements: Rds.UpdateSites( - where: Rds.SitesWhere() - .TenantId(context.TenantId) - .SiteId(savedSiteId), - param: Rds.SitesParam() - .SiteSettings(ss.RecordingJson( - context: context)))); - } + ss?.DashboardParts? + .ForEach(part => + { + conv.Updated |= ConvertFilterHashDataId( + ss: HeaderInfo.Convertors.FirstOrDefault(o => o.SavedSiteId == part.SiteId)?.SiteSettings, + filterHash: part.View?.ColumnFilterHash, + idHash: idHash); + }); } } + private static Regex RegexId = new Regex(@"\b(? filterHash, Dictionary idHash) { - if (filterHash == null) return false; - var IsUpdated = false; + if (filterHash == null || ss?.Columns == null) return false; + var isUpdated = false; foreach (var key in filterHash.Keys) { - var sb = new StringBuilder(filterHash[key]); - foreach (var hash in idHash) - { - sb.Replace($"\"{hash.Key}\"", $"\"{hash.Value}\txx\t\""); - } - var newValue = sb.Replace("\txx\t\"", "\"").ToString(); - if(filterHash[key] != newValue) + if (ss.Columns.FirstOrDefault(o => o.ColumnName == key)?.ChoicesText? + .RegexExists( + pattern: @"(?<=\[\[).+(?=\]\])", + regexOptions: RegexOptions.Multiline) != true) continue; + var orgStr = filterHash[key]; + var newStr = RegexId.Replace( + orgStr, + new MatchEvaluator((Match matchId) => idHash.Get(matchId.Value.ToLong()).ToStr())); + if (newStr != orgStr) { - IsUpdated = true; - filterHash[key] = newValue; + isUpdated = true; + filterHash[key] = newStr; } } - return IsUpdated; + return isUpdated; } public Dictionary GetIdHashFromConverters() diff --git a/Implem.Pleasanter/Libraries/SitePackages/Utilities.cs b/Implem.Pleasanter/Libraries/SitePackages/Utilities.cs index 4bbcdafab..f71675ebe 100644 --- a/Implem.Pleasanter/Libraries/SitePackages/Utilities.cs +++ b/Implem.Pleasanter/Libraries/SitePackages/Utilities.cs @@ -193,6 +193,7 @@ public static string ImportSitePackage( permissionIdList: sitePackage.PermissionIdList, includeNotifications: includeNotifications, includeReminders: includeReminders); + conv.SiteSettings = packageSiteModel.SiteSettings; Repository.ExecuteScalar_response( context: context, transactional: true, @@ -260,11 +261,11 @@ public static string ImportSitePackage( statements: statements.ToArray()); } var idHash = sitePackage.GetIdHashFromConverters(); - foreach (long savedSiteId in sitePackage.HeaderInfo.Convertors.Select(e => e.SavedSiteId)) + foreach (var conv in sitePackage.HeaderInfo.Convertors) { var siteModel = new SiteModel( context: context, - siteId: savedSiteId); + siteId: conv.SavedSiteId.ToLong()); switch (siteModel.ReferenceType) { case "Wikis": @@ -286,7 +287,8 @@ public static string ImportSitePackage( top: 1, column: Rds.WikisColumn().WikiId(), where: Rds.WikisWhere().SiteId(siteModel.SiteId))); - idHash.Add(savedSiteId, wikiId); + var srcWikiId = sitePackage.Sites?.FirstOrDefault(o => o.SiteId == conv.SiteId)?.WikiId; + if (srcWikiId != null) idHash.Add(srcWikiId.ToLong(), wikiId); break; default: Search.Indexes.Create( @@ -341,6 +343,22 @@ public static string ImportSitePackage( } } } + conv.Updated |= ConvertScriptDataId( + ss: conv.SiteSettings, + idHash: idHash); + if (conv.Updated) + { + conv.SiteSettings.Init(context: context); + Repository.ExecuteNonQuery( + context: context, + statements: Rds.UpdateSites( + where: Rds.SitesWhere() + .TenantId(context.TenantId) + .SiteId(conv.SavedSiteId), + param: Rds.SitesParam() + .SiteSettings(conv.SiteSettings.RecordingJson( + context: context)))); + } } var response = Repository.ExecuteScalar_response( context: context, @@ -416,6 +434,7 @@ public static string ImportSitePackage( statements: StatusUtilities.UpdateStatus( tenantId: context.TenantId, type: StatusUtilities.Types.UsersUpdated)); + SiteInfo.Reflesh(context: context); if (apiData == null) { SessionUtilities.Set( @@ -447,6 +466,58 @@ public static string ImportSitePackage( } } + private static bool ConvertScriptDataId( + SiteSettings ss, + Dictionary idHash) + { + var isUpdated = false; + ss?.Scripts?.ForEach(script => + { + var newScript = ConvertScriptDataId( + text: script.Body, + idHash: idHash); + if (newScript != script.Body) + { + isUpdated = true; + script.Body = newScript; + } + }); + ss?.ServerScripts?.ForEach(script => + { + var newScript = ConvertScriptDataId( + text: script.Body, + idHash: idHash); + if (newScript != script.Body) + { + isUpdated = true; + script.Body = newScript; + } + }); + return isUpdated; + } + + private static string ConvertScriptDataId( + string text, + Dictionary idHash) + { + var regexSection = new Regex(@"^(?
// @siteid list start@.*\r?)$(?[\s\S]*?)^(?// @siteid list end@)", RegexOptions.Multiline);
+            var regexId = new Regex(@"\b(?
+                    !matchSection.Groups.ContainsKey("code")
+                        ? matchSection.Value
+                        : matchSection.Groups["pre"].Value
+                            + regexId.Replace(
+                                matchSection.Groups["code"].Value,
+                                new MatchEvaluator((Match matchId) =>
+                                    (long.TryParse(matchId.Value, out var id)
+                                        && idHash.ContainsKey(id))
+                                        ? idHash[id].ToString()
+                                        : matchId.Value))
+                            + matchSection.Groups["post"].Value));
+        }
+
         public static SitePackage GetSitePackageFromPostedFile(Context context)
         {
             var serializer = new JsonSerializer();
diff --git a/Implem.Pleasanter/Models/Binaries/BinaryModel.cs b/Implem.Pleasanter/Models/Binaries/BinaryModel.cs
index 6a8f7eae3..ac5975b98 100644
--- a/Implem.Pleasanter/Models/Binaries/BinaryModel.cs
+++ b/Implem.Pleasanter/Models/Binaries/BinaryModel.cs
@@ -491,7 +491,7 @@ private List UpdateStatements(
                         ss: ss,
                         binaryModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(BinaryId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -571,7 +571,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteBinaries(
                     tableType: tableType,
-                    param: Rds.BinariesParam().BinaryId(BinaryId)));
+                    where: Rds.BinariesWhere().BinaryId(BinaryId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Binaries/BinaryUtilities.cs b/Implem.Pleasanter/Models/Binaries/BinaryUtilities.cs
index 69c9ff9e1..542af7608 100644
--- a/Implem.Pleasanter/Models/Binaries/BinaryUtilities.cs
+++ b/Implem.Pleasanter/Models/Binaries/BinaryUtilities.cs
@@ -865,7 +865,7 @@ public static string UploadFile(
                     var tempBinaryHash = Repository.ExecuteScalar_bytes(
                             context: context,
                             statements: new SqlStatement(
-                                commandText: context.Sqls.GetBinaryHash,
+                                commandText: context.Sqls.GetBinaryHash(algorithm: "md5"),
                                 param: new SqlParamCollection{
                                     { "Algorithm", "md5" },
                                     { "Guid", fileUuid[filesIndex] }
diff --git a/Implem.Pleasanter/Models/Dashboards/DashboardModel.cs b/Implem.Pleasanter/Models/Dashboards/DashboardModel.cs
index 43f5e9a31..be7aa5887 100644
--- a/Implem.Pleasanter/Models/Dashboards/DashboardModel.cs
+++ b/Implem.Pleasanter/Models/Dashboards/DashboardModel.cs
@@ -1188,7 +1188,7 @@ private List UpdateStatements(
                         ss: ss,
                         dashboardModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(DashboardId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -1386,7 +1386,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteDashboards(
                     tableType: tableType,
-                    param: Rds.DashboardsParam().SiteId(SiteId).DashboardId(DashboardId)));
+                    where: Rds.DashboardsWhere().SiteId(SiteId).DashboardId(DashboardId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Demos/DemoModel.cs b/Implem.Pleasanter/Models/Demos/DemoModel.cs
index 9a1e6fbed..897d31b78 100644
--- a/Implem.Pleasanter/Models/Demos/DemoModel.cs
+++ b/Implem.Pleasanter/Models/Demos/DemoModel.cs
@@ -387,7 +387,7 @@ private List UpdateStatements(
                         ss: ss,
                         demoModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(DemoId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -467,7 +467,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteDemos(
                     tableType: tableType,
-                    param: Rds.DemosParam().DemoId(DemoId)));
+                    where: Rds.DemosWhere().DemoId(DemoId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Depts/DeptModel.cs b/Implem.Pleasanter/Models/Depts/DeptModel.cs
index 5a5e68551..723050de4 100644
--- a/Implem.Pleasanter/Models/Depts/DeptModel.cs
+++ b/Implem.Pleasanter/Models/Depts/DeptModel.cs
@@ -1103,7 +1103,7 @@ private List UpdateStatements(
                         ss: ss,
                         deptModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(DeptId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -1206,7 +1206,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteDepts(
                     tableType: tableType,
-                    param: Rds.DeptsParam().DeptId(DeptId)));
+                    where: Rds.DeptsWhere().DeptId(DeptId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/ExportSettings/ExportSettingCollection.cs b/Implem.Pleasanter/Models/ExportSettings/ExportSettingCollection.cs
deleted file mode 100644
index 593d27acd..000000000
--- a/Implem.Pleasanter/Models/ExportSettings/ExportSettingCollection.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-using Implem.DefinitionAccessor;
-using Implem.Libraries.Classes;
-using Implem.Libraries.DataSources.SqlServer;
-using Implem.Libraries.Utilities;
-using Implem.Pleasanter.Libraries.DataSources;
-using Implem.Pleasanter.Libraries.DataTypes;
-using Implem.Pleasanter.Libraries.Html;
-using Implem.Pleasanter.Libraries.HtmlParts;
-using Implem.Pleasanter.Libraries.Models;
-using Implem.Pleasanter.Libraries.Requests;
-using Implem.Pleasanter.Libraries.Responses;
-using Implem.Pleasanter.Libraries.Security;
-using Implem.Pleasanter.Libraries.Server;
-using Implem.Pleasanter.Libraries.Settings;
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-namespace Implem.Pleasanter.Models
-{
-    [Serializable]
-    public class ExportSettingCollection : List
-    {
-        [NonSerialized]
-        public Databases.AccessStatuses AccessStatus = Databases.AccessStatuses.Initialized;
-        public int TotalCount;
-
-        public ExportSettingCollection(
-            Context context,
-            SqlColumnCollection column = null,
-            SqlJoinCollection join = null,
-            SqlWhereCollection where = null,
-            SqlOrderByCollection orderBy = null,
-            SqlParamCollection param = null,
-            Sqls.TableTypes tableType = Sqls.TableTypes.Normal,
-            bool distinct = false,
-            int top = 0,
-            int offset = 0,
-            int pageSize = 0,
-            bool get = true)
-        {
-            if (get)
-            {
-                Set(
-                    context: context,
-                    dataRows: Get(
-                        context: context,
-                        column: column,
-                        join: join,
-                        where: where,
-                        orderBy: orderBy,
-                        param: param,
-                        tableType: tableType,
-                        distinct: distinct,
-                        top: top,
-                        offset: offset,
-                        pageSize: pageSize));
-            }
-        }
-
-        public ExportSettingCollection(
-            Context context,
-            EnumerableRowCollection dataRows)
-        {
-                Set(
-                    context: context,
-                    dataRows: dataRows);
-        }
-
-        private ExportSettingCollection Set(
-            Context context,
-            EnumerableRowCollection dataRows)
-        {
-            if (dataRows.Any())
-            {
-                foreach (DataRow dataRow in dataRows)
-                {
-                    Add(new ExportSettingModel(
-                        context: context,
-                        dataRow: dataRow));
-                }
-                AccessStatus = Databases.AccessStatuses.Selected;
-            }
-            else
-            {
-                AccessStatus = Databases.AccessStatuses.NotFound;
-            }
-            return this;
-        }
-
-        private EnumerableRowCollection Get(
-            Context context,
-            SqlColumnCollection column = null,
-            SqlJoinCollection join = null,
-            SqlWhereCollection where = null,
-            SqlOrderByCollection orderBy = null,
-            SqlParamCollection param = null,
-            Sqls.TableTypes tableType = Sqls.TableTypes.Normal,
-            bool distinct = false,
-            int top = 0,
-            int offset = 0,
-            int pageSize = 0)
-        {
-            var statements = new List
-            {
-                Rds.SelectExportSettings(
-                    dataTableName: "Main",
-                    column: column ?? Rds.ExportSettingsDefaultColumns(),
-                    join: join ??  Rds.ExportSettingsJoinDefault(),
-                    where: where,
-                    orderBy: orderBy,
-                    param: param,
-                    tableType: tableType,
-                    distinct: distinct,
-                    top: top,
-                    offset: offset,
-                    pageSize: pageSize),
-                Rds.SelectCount(
-                    tableName: "ExportSettings",
-                    tableType: tableType,
-                    join: join ?? Rds.ExportSettingsJoinDefault(),
-                    where: where)
-            };
-            var dataSet = Repository.ExecuteDataSet(
-                context: context,
-                transactional: false,
-                statements: statements.ToArray());
-            TotalCount = Rds.Count(dataSet);
-            return dataSet.Tables["Main"].AsEnumerable();
-        }
-    }
-}
diff --git a/Implem.Pleasanter/Models/ExportSettings/ExportSettingModel.cs b/Implem.Pleasanter/Models/ExportSettings/ExportSettingModel.cs
deleted file mode 100644
index f96661839..000000000
--- a/Implem.Pleasanter/Models/ExportSettings/ExportSettingModel.cs
+++ /dev/null
@@ -1,728 +0,0 @@
-using Implem.DefinitionAccessor;
-using Implem.Libraries.Classes;
-using Implem.Libraries.DataSources.SqlServer;
-using Implem.Libraries.Utilities;
-using Implem.Pleasanter.Libraries.DataSources;
-using Implem.Pleasanter.Libraries.DataTypes;
-using Implem.Pleasanter.Libraries.Extensions;
-using Implem.Pleasanter.Libraries.General;
-using Implem.Pleasanter.Libraries.Html;
-using Implem.Pleasanter.Libraries.HtmlParts;
-using Implem.Pleasanter.Libraries.Models;
-using Implem.Pleasanter.Libraries.Requests;
-using Implem.Pleasanter.Libraries.Responses;
-using Implem.Pleasanter.Libraries.Security;
-using Implem.Pleasanter.Libraries.Server;
-using Implem.Pleasanter.Libraries.ServerScripts;
-using Implem.Pleasanter.Libraries.Settings;
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Data.Common;
-using System.Linq;
-using static Implem.Pleasanter.Libraries.ServerScripts.ServerScriptModel;
-namespace Implem.Pleasanter.Models
-{
-    [Serializable]
-    public class ExportSettingModel : BaseModel
-    {
-        public string ReferenceType = "Sites";
-        public long ReferenceId = 0;
-        public Title Title = new Title();
-        public long ExportSettingId = 0;
-        public bool AddHeader = true;
-        public ExportColumns ExportColumns = new ExportColumns();
-        public string SavedReferenceType = "Sites";
-        public long SavedReferenceId = 0;
-        public string SavedTitle = string.Empty;
-        public long SavedExportSettingId = 0;
-        public bool SavedAddHeader = true;
-        public string SavedExportColumns = "{}";
-
-        public bool ReferenceType_Updated(Context context, bool copy = false, Column column = null)
-        {
-            if (copy && column?.CopyByDefault == true)
-            {
-                return column.GetDefaultInput(context: context).ToString() != ReferenceType;
-            }
-            return ReferenceType != SavedReferenceType && ReferenceType != null
-                &&  (column == null
-                    || column.DefaultInput.IsNullOrEmpty()
-                    || column.GetDefaultInput(context: context).ToString() != ReferenceType);
-        }
-
-        public bool ReferenceId_Updated(Context context, bool copy = false, Column column = null)
-        {
-            if (copy && column?.CopyByDefault == true)
-            {
-                return column.GetDefaultInput(context: context).ToLong() != ReferenceId;
-            }
-            return ReferenceId != SavedReferenceId
-                &&  (column == null
-                    || column.DefaultInput.IsNullOrEmpty()
-                    || column.GetDefaultInput(context: context).ToLong() != ReferenceId);
-        }
-
-        public bool Title_Updated(Context context, bool copy = false, Column column = null)
-        {
-            if (copy && column?.CopyByDefault == true)
-            {
-                return column.GetDefaultInput(context: context).ToString() != Title.Value;
-            }
-            return Title.Value != SavedTitle && Title.Value != null
-                &&  (column == null
-                    || column.DefaultInput.IsNullOrEmpty()
-                    || column.GetDefaultInput(context: context).ToString() != Title.Value);
-        }
-
-        public bool ExportSettingId_Updated(Context context, bool copy = false, Column column = null)
-        {
-            if (copy && column?.CopyByDefault == true)
-            {
-                return column.GetDefaultInput(context: context).ToLong() != ExportSettingId;
-            }
-            return ExportSettingId != SavedExportSettingId
-                &&  (column == null
-                    || column.DefaultInput.IsNullOrEmpty()
-                    || column.GetDefaultInput(context: context).ToLong() != ExportSettingId);
-        }
-
-        public bool AddHeader_Updated(Context context, bool copy = false, Column column = null)
-        {
-            if (copy && column?.CopyByDefault == true)
-            {
-                return column.GetDefaultInput(context: context).ToBool() != AddHeader;
-            }
-            return AddHeader != SavedAddHeader
-                &&  (column == null
-                    || column.DefaultInput.IsNullOrEmpty()
-                    || column.GetDefaultInput(context: context).ToBool() != AddHeader);
-        }
-
-        public bool ExportColumns_Updated(Context context, bool copy = false, Column column = null)
-        {
-            if (copy && column?.CopyByDefault == true)
-            {
-                return column.GetDefaultInput(context: context).ToString() != ExportColumns.ToJson();
-            }
-            return ExportColumns.ToJson() != SavedExportColumns && ExportColumns.ToJson() != null
-                &&  (column == null
-                    || column.DefaultInput.IsNullOrEmpty()
-                    || column.GetDefaultInput(context: context).ToString() != ExportColumns.ToJson());
-        }
-
-        public Title Session_Title(Context context)
-        {
-            return context.SessionData.Get("Title") != null
-                ? context.SessionData.Get("Title").Deserialize() ?? new Title()
-                : Title;
-        }
-
-        public void Session_Title(Context context, string value)
-        {
-            SessionUtilities.Set(
-                context: context,
-                key: "Title",
-                value: value,
-                page: true);
-        }
-
-        public bool Session_AddHeader(Context context)
-        {
-            return context.SessionData.Get("AddHeader") != null
-                ? context.SessionData.Get("AddHeader").ToBool()
-                : AddHeader;
-        }
-
-        public void Session_AddHeader(Context context, string value)
-        {
-            SessionUtilities.Set(
-                context: context,
-                key: "AddHeader",
-                value: value,
-                page: true);
-        }
-
-        public ExportColumns Session_ExportColumns(Context context)
-        {
-            return context.SessionData.Get("ExportColumns") != null
-                ? context.SessionData.Get("ExportColumns")?.ToString().Deserialize<ExportColumns>() ?? new ExportColumns(ReferenceType)
-                : ExportColumns;
-        }
-
-        public void Session_ExportColumns(Context context, string value)
-        {
-            SessionUtilities.Set(
-                context: context,
-                key: "ExportColumns",
-                value: value,
-                page: true);
-        }
-
-        public ExportSettingModel()
-        {
-        }
-
-        public ExportSettingModel(
-            Context context,
-            MethodTypes methodType = MethodTypes.NotSet)
-        {
-            OnConstructing(context: context);
-            MethodType = methodType;
-            OnConstructed(context: context);
-        }
-
-        public ExportSettingModel(
-            Context context,
-            long exportSettingId,
-            SqlColumnCollection column = null,
-            bool clearSessions = false,
-            MethodTypes methodType = MethodTypes.NotSet)
-        {
-            OnConstructing(context: context);
-            ExportSettingId = exportSettingId;
-            if (context.QueryStrings.ContainsKey("ver"))
-            {
-                Get(
-                    context: context,
-                    tableType: Sqls.TableTypes.NormalAndHistory,
-                    column: column,
-                    where: Rds.ExportSettingsWhereDefault(
-                        context: context,
-                        exportSettingModel: this)
-                            .ExportSettings_Ver(context.QueryStrings.Int("ver")));
-            }
-            else
-            {
-                Get(
-                    context: context,
-                    column: column);
-            }
-            if (clearSessions) ClearSessions(context: context);
-            MethodType = methodType;
-            OnConstructed(context: context);
-        }
-
-        public ExportSettingModel(
-            Context context,
-            DataRow dataRow,
-            string tableAlias = null)
-        {
-            OnConstructing(context: context);
-            if (dataRow != null)
-            {
-                Set(
-                    context: context,
-                    dataRow: dataRow,
-                    tableAlias: tableAlias);
-            }
-            OnConstructed(context: context);
-        }
-
-        private void OnConstructing(Context context)
-        {
-        }
-
-        private void OnConstructed(Context context)
-        {
-        }
-
-        public void ClearSessions(Context context)
-        {
-            Session_Title(context: context, value: null);
-            Session_AddHeader(context: context, value: null);
-            Session_ExportColumns(context: context, value: null);
-        }
-
-        public ExportSettingModel Get(
-            Context context,
-            Sqls.TableTypes tableType = Sqls.TableTypes.Normal,
-            SqlColumnCollection column = null,
-            SqlJoinCollection join = null,
-            SqlWhereCollection where = null,
-            SqlOrderByCollection orderBy = null,
-            SqlParamCollection param = null,
-            bool distinct = false,
-            int top = 0)
-        {
-            where = where ?? Rds.ExportSettingsWhereDefault(
-                context: context,
-                exportSettingModel: this);
-            column = (column ?? Rds.ExportSettingsDefaultColumns());
-            join = join ?? Rds.ExportSettingsJoinDefault();
-            Set(context, Repository.ExecuteTable(
-                context: context,
-                statements: Rds.SelectExportSettings(
-                    tableType: tableType,
-                    column: column,
-                    join: join,
-                    where: where,
-                    orderBy: orderBy,
-                    param: param,
-                    distinct: distinct,
-                    top: top)));
-            return this;
-        }
-
-        public ErrorData Create(
-            Context context,
-            SiteSettings ss,
-            Sqls.TableTypes tableType = Sqls.TableTypes.Normal,
-            SqlParamCollection param = null,
-            string noticeType = "Created",
-            bool otherInitValue = false,
-            bool get = true)
-        {
-            var statements = new List<SqlStatement>();
-            statements.AddRange(CreateStatements(
-                context: context,
-                ss: ss,
-                tableType: tableType,
-                param: param,
-                otherInitValue: otherInitValue));
-            var response = Repository.ExecuteScalar_response(
-                context: context,
-                transactional: true,
-                selectIdentity: true,
-                statements: statements.ToArray());
-            ExportSettingId = (response.Id ?? ExportSettingId).ToLong();
-            if (get) Get(context: context);
-            return new ErrorData(type: Error.Types.None);
-        }
-
-        public List<SqlStatement> CreateStatements(
-            Context context,
-            SiteSettings ss,
-            string dataTableName = null,
-            Sqls.TableTypes tableType = Sqls.TableTypes.Normal,
-            SqlParamCollection param = null,
-            bool otherInitValue = false)
-        {
-            var statements = new List<SqlStatement>();
-            statements.AddRange(new List<SqlStatement>
-            {
-                Rds.InsertExportSettings(
-                    dataTableName: dataTableName,
-                    tableType: tableType,
-                    selectIdentity: true,
-                    param: param ?? Rds.ExportSettingsParamDefault(
-                        context: context,
-                        ss: ss,
-                        exportSettingModel: this,
-                        setDefault: true,
-                        otherInitValue: otherInitValue))
-            });
-            return statements;
-        }
-
-        public ErrorData Update(
-            Context context,
-            SiteSettings ss,
-            SqlParamCollection param = null,
-            List<SqlStatement> additionalStatements = null,
-            bool otherInitValue = false,
-            bool setBySession = true,
-            bool get = true,
-            bool checkConflict = true)
-        {
-            if (setBySession)
-            {
-                SetBySession(context: context);
-            }
-            var statements = new List<SqlStatement>();
-            var verUp = Versions.VerUp(
-                context: context,
-                ss: ss,
-                verUp: VerUp);
-            statements.AddRange(UpdateStatements(
-                context: context,
-                ss: ss,
-                param: param,
-                otherInitValue: otherInitValue,
-                additionalStatements: additionalStatements,
-                checkConflict: checkConflict,
-                verUp: verUp));
-            var response = Repository.ExecuteScalar_response(
-                context: context,
-                transactional: true,
-                statements: statements.ToArray());
-            if (response.Event == "Conflicted")
-            {
-                return new ErrorData(
-                    type: Error.Types.UpdateConflicts,
-                    id: ExportSettingId);
-            }
-            if (get)
-            {
-                Get(context: context);
-            }
-            return new ErrorData(type: Error.Types.None);
-        }
-
-        public List<SqlStatement> UpdateStatements(
-            Context context,
-            SiteSettings ss,
-            string dataTableName = null,
-            SqlParamCollection param = null,
-            bool otherInitValue = false,
-            List<SqlStatement> additionalStatements = null,
-            bool checkConflict = true,
-            bool verUp = false)
-        {
-            var timestamp = Timestamp.ToDateTime();
-            var statements = new List<SqlStatement>();
-            var where = Rds.ExportSettingsWhereDefault(
-                context: context,
-                exportSettingModel: this)
-                    .UpdatedTime(timestamp, _using: timestamp.InRange() && checkConflict);
-            if (verUp)
-            {
-                statements.Add(Rds.ExportSettingsCopyToStatement(
-                    where: where,
-                    tableType: Sqls.TableTypes.History,
-                    ColumnNames()));
-                Ver++;
-            }
-            statements.AddRange(UpdateStatements(
-                context: context,
-                ss: ss,
-                dataTableName: dataTableName,
-                where: where,
-                param: param,
-                otherInitValue: otherInitValue));
-            if (additionalStatements?.Any() == true)
-            {
-                statements.AddRange(additionalStatements);
-            }
-            return statements;
-        }
-
-        private List<SqlStatement> UpdateStatements(
-            Context context,
-            SiteSettings ss,
-            string dataTableName = null,
-            SqlWhereCollection where = null,
-            SqlParamCollection param = null,
-            bool otherInitValue = false)
-        {
-            return new List<SqlStatement>
-            {
-                Rds.UpdateExportSettings(
-                    dataTableName: dataTableName,
-                    where: where,
-                    param: param ?? Rds.ExportSettingsParamDefault(
-                        context: context,
-                        ss: ss,
-                        exportSettingModel: this,
-                        otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(ExportSettingId))
-                {
-                    DataTableName = dataTableName,
-                    IfConflicted = true,
-                    Id = ExportSettingId
-                }
-            };
-        }
-
-        public ErrorData UpdateOrCreate(
-            Context context,
-            SiteSettings ss,
-            string dataTableName = null,
-            SqlWhereCollection where = null,
-            SqlParamCollection param = null)
-        {
-            SetBySession(context: context);
-            var statements = new List<SqlStatement>
-            {
-                Rds.UpdateOrInsertExportSettings(
-                    where: where ?? Rds.ExportSettingsWhereDefault(
-                        context: context,
-                        exportSettingModel: this),
-                    param: param ?? Rds.ExportSettingsParamDefault(
-                        context: context,
-                        ss: ss,
-                        exportSettingModel: this,
-                        setDefault: true))
-            };
-            var response = Repository.ExecuteScalar_response(
-                context: context,
-                transactional: true,
-                selectIdentity: true,
-                statements: statements.ToArray());
-            ExportSettingId = (response.Id ?? ExportSettingId).ToLong();
-            Get(context: context);
-            return new ErrorData(type: Error.Types.None);
-        }
-
-        public ErrorData Delete(Context context)
-        {
-            var statements = new List<SqlStatement>();
-            var where = Rds.ExportSettingsWhere().ExportSettingId(ExportSettingId);
-            statements.AddRange(new List<SqlStatement>
-            {
-                Rds.DeleteExportSettings(
-                    factory: context,
-                    where: where)
-            });
-            Repository.ExecuteNonQuery(
-                context: context,
-                transactional: true,
-                statements: statements.ToArray());
-            return new ErrorData(type: Error.Types.None);
-        }
-
-        public ErrorData Restore(Context context, long exportSettingId)
-        {
-            ExportSettingId = exportSettingId;
-            Repository.ExecuteNonQuery(
-                context: context,
-                connectionString: Parameters.Rds.OwnerConnectionString,
-                transactional: true,
-                statements: new SqlStatement[]
-                {
-                    Rds.RestoreExportSettings(
-                        factory: context,
-                        where: Rds.ExportSettingsWhere().ExportSettingId(ExportSettingId))
-                });
-            return new ErrorData(type: Error.Types.None);
-        }
-
-        public ErrorData PhysicalDelete(
-            Context context, Sqls.TableTypes tableType = Sqls.TableTypes.Normal)
-        {
-            Repository.ExecuteNonQuery(
-                context: context,
-                transactional: true,
-                statements: Rds.PhysicalDeleteExportSettings(
-                    tableType: tableType,
-                    param: Rds.ExportSettingsParam().ExportSettingId(ExportSettingId)));
-            return new ErrorData(type: Error.Types.None);
-        }
-
-        public void SetByModel(ExportSettingModel exportSettingModel)
-        {
-            ReferenceType = exportSettingModel.ReferenceType;
-            ReferenceId = exportSettingModel.ReferenceId;
-            Title = exportSettingModel.Title;
-            AddHeader = exportSettingModel.AddHeader;
-            ExportColumns = exportSettingModel.ExportColumns;
-            Comments = exportSettingModel.Comments;
-            Creator = exportSettingModel.Creator;
-            Updator = exportSettingModel.Updator;
-            CreatedTime = exportSettingModel.CreatedTime;
-            UpdatedTime = exportSettingModel.UpdatedTime;
-            VerUp = exportSettingModel.VerUp;
-            Comments = exportSettingModel.Comments;
-            ClassHash = exportSettingModel.ClassHash;
-            NumHash = exportSettingModel.NumHash;
-            DateHash = exportSettingModel.DateHash;
-            DescriptionHash = exportSettingModel.DescriptionHash;
-            CheckHash = exportSettingModel.CheckHash;
-            AttachmentsHash = exportSettingModel.AttachmentsHash;
-        }
-
-        private void SetBySession(Context context)
-        {
-            if (!context.Forms.Exists("ExportSettings_Title")) Title = Session_Title(context: context);
-            if (!context.Forms.Exists("ExportSettings_AddHeader")) AddHeader = Session_AddHeader(context: context);
-            if (!context.Forms.Exists("ExportSettings_ExportColumns")) ExportColumns = Session_ExportColumns(context: context);
-        }
-
-        private void Set(Context context, DataTable dataTable)
-        {
-            switch (dataTable.Rows.Count)
-            {
-                case 1: Set(context, dataTable.Rows[0]); break;
-                case 0: AccessStatus = Databases.AccessStatuses.NotFound; break;
-                default: AccessStatus = Databases.AccessStatuses.Overlap; break;
-            }
-        }
-
-        private void Set(Context context, DataRow dataRow, string tableAlias = null)
-        {
-            AccessStatus = Databases.AccessStatuses.Selected;
-            foreach (DataColumn dataColumn in dataRow.Table.Columns)
-            {
-                var column = new ColumnNameInfo(dataColumn.ColumnName);
-                if (column.TableAlias == tableAlias)
-                {
-                    switch (column.Name)
-                    {
-                        case "ReferenceType":
-                            if (dataRow[column.ColumnName] != DBNull.Value)
-                            {
-                                ReferenceType = dataRow[column.ColumnName].ToString();
-                                SavedReferenceType = ReferenceType;
-                            }
-                            break;
-                        case "ReferenceId":
-                            if (dataRow[column.ColumnName] != DBNull.Value)
-                            {
-                                ReferenceId = dataRow[column.ColumnName].ToLong();
-                                SavedReferenceId = ReferenceId;
-                            }
-                            break;
-                        case "Title":
-                            if (dataRow[column.ColumnName] != DBNull.Value)
-                            {
-                                Title = new Title(dataRow, "ExportSettingId");
-                                SavedTitle = Title.Value;
-                            }
-                            break;
-                        case "ExportSettingId":
-                            if (dataRow[column.ColumnName] != DBNull.Value)
-                            {
-                                ExportSettingId = dataRow[column.ColumnName].ToLong();
-                                SavedExportSettingId = ExportSettingId;
-                            }
-                            break;
-                        case "Ver":
-                            Ver = dataRow[column.ColumnName].ToInt();
-                            SavedVer = Ver;
-                            break;
-                        case "AddHeader":
-                            AddHeader = dataRow[column.ColumnName].ToBool();
-                            SavedAddHeader = AddHeader;
-                            break;
-                        case "ExportColumns":
-                            ExportColumns = dataRow[column.ColumnName].ToString().Deserialize<ExportColumns>() ?? new ExportColumns(ReferenceType);
-                            SavedExportColumns = ExportColumns.ToJson();
-                            break;
-                        case "Comments":
-                            Comments = dataRow[column.ColumnName].ToString().Deserialize<Comments>() ?? new Comments();
-                            SavedComments = Comments.ToJson();
-                            break;
-                        case "Creator":
-                            Creator = SiteInfo.User(context: context, userId: dataRow.Int(column.ColumnName));
-                            SavedCreator = Creator.Id;
-                            break;
-                        case "Updator":
-                            Updator = SiteInfo.User(context: context, userId: dataRow.Int(column.ColumnName));
-                            SavedUpdator = Updator.Id;
-                            break;
-                        case "CreatedTime":
-                            CreatedTime = new Time(context, dataRow, column.ColumnName);
-                            SavedCreatedTime = CreatedTime.Value;
-                            break;
-                        case "UpdatedTime":
-                            UpdatedTime = new Time(context, dataRow, column.ColumnName); Timestamp = dataRow.Field<DateTime>(column.ColumnName).ToString("yyyy/M/d H:m:s.fff");
-                            SavedUpdatedTime = UpdatedTime.Value;
-                            break;
-                        case "IsHistory":
-                            VerType = dataRow.Bool(column.ColumnName)
-                                ? Versions.VerTypes.History
-                                : Versions.VerTypes.Latest; break;
-                        default:
-                            switch (Def.ExtendedColumnTypes.Get(column?.Name ?? string.Empty))
-                            {
-                                case "Class":
-                                    SetClass(
-                                        columnName: column.Name,
-                                        value: dataRow[column.ColumnName].ToString());
-                                    SetSavedClass(
-                                        columnName: column.Name,
-                                        value: GetClass(columnName: column.Name));
-                                    break;
-                                case "Num":
-                                    SetNum(
-                                        columnName: column.Name,
-                                        value: new Num(
-                                            dataRow: dataRow,
-                                            name: column.ColumnName));
-                                    SetSavedNum(
-                                        columnName: column.Name,
-                                        value: GetNum(columnName: column.Name).Value);
-                                    break;
-                                case "Date":
-                                    SetDate(
-                                        columnName: column.Name,
-                                        value: dataRow[column.ColumnName].ToDateTime());
-                                    SetSavedDate(
-                                        columnName: column.Name,
-                                        value: GetDate(columnName: column.Name));
-                                    break;
-                                case "Description":
-                                    SetDescription(
-                                        columnName: column.Name,
-                                        value: dataRow[column.ColumnName].ToString());
-                                    SetSavedDescription(
-                                        columnName: column.Name,
-                                        value: GetDescription(columnName: column.Name));
-                                    break;
-                                case "Check":
-                                    SetCheck(
-                                        columnName: column.Name,
-                                        value: dataRow[column.ColumnName].ToBool());
-                                    SetSavedCheck(
-                                        columnName: column.Name,
-                                        value: GetCheck(columnName: column.Name));
-                                    break;
-                                case "Attachments":
-                                    SetAttachments(
-                                        columnName: column.Name,
-                                        value: dataRow[column.ColumnName].ToString()
-                                            .Deserialize<Attachments>() ?? new Attachments());
-                                    SetSavedAttachments(
-                                        columnName: column.Name,
-                                        value: GetAttachments(columnName: column.Name).ToJson());
-                                    break;
-                            }
-                            break;
-                    }
-                }
-            }
-        }
-
-        public bool Updated(Context context)
-        {
-            return Updated()
-                || ReferenceType_Updated(context: context)
-                || ReferenceId_Updated(context: context)
-                || Title_Updated(context: context)
-                || ExportSettingId_Updated(context: context)
-                || Ver_Updated(context: context)
-                || AddHeader_Updated(context: context)
-                || ExportColumns_Updated(context: context)
-                || Comments_Updated(context: context)
-                || Creator_Updated(context: context)
-                || Updator_Updated(context: context);
-        }
-
-        private bool UpdatedWithColumn(Context context, SiteSettings ss)
-        {
-            return ClassHash.Any(o => Class_Updated(
-                    columnName: o.Key,
-                    column: ss.GetColumn(context: context, o.Key)))
-                || NumHash.Any(o => Num_Updated(
-                    columnName: o.Key,
-                    column: ss.GetColumn(context: context, o.Key)))
-                || DateHash.Any(o => Date_Updated(
-                    columnName: o.Key,
-                    column: ss.GetColumn(context: context, o.Key)))
-                || DescriptionHash.Any(o => Description_Updated(
-                    columnName: o.Key,
-                    column: ss.GetColumn(context: context, o.Key)))
-                || CheckHash.Any(o => Check_Updated(
-                    columnName: o.Key,
-                    column: ss.GetColumn(context: context, o.Key)))
-                || AttachmentsHash.Any(o => Attachments_Updated(
-                    columnName: o.Key,
-                    column: ss.GetColumn(context: context, o.Key)));
-        }
-
-        public bool Updated(Context context, SiteSettings ss)
-        {
-            return UpdatedWithColumn(context: context, ss: ss)
-                || ReferenceType_Updated(context: context)
-                || ReferenceId_Updated(context: context)
-                || Title_Updated(context: context)
-                || ExportSettingId_Updated(context: context)
-                || Ver_Updated(context: context)
-                || AddHeader_Updated(context: context)
-                || ExportColumns_Updated(context: context)
-                || Comments_Updated(context: context)
-                || Creator_Updated(context: context)
-                || Updator_Updated(context: context);
-        }
-    }
-}
diff --git a/Implem.Pleasanter/Models/ExportSettings/ExportSettingUtilities.cs b/Implem.Pleasanter/Models/ExportSettings/ExportSettingUtilities.cs
deleted file mode 100644
index 9cff46352..000000000
--- a/Implem.Pleasanter/Models/ExportSettings/ExportSettingUtilities.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using Implem.DefinitionAccessor;
-using Implem.Libraries.Classes;
-using Implem.Libraries.DataSources.Interfaces;
-using Implem.Libraries.DataSources.SqlServer;
-using Implem.Libraries.Utilities;
-using Implem.Pleasanter.Libraries.DataSources;
-using Implem.Pleasanter.Libraries.DataTypes;
-using Implem.Pleasanter.Libraries.Extensions;
-using Implem.Pleasanter.Libraries.General;
-using Implem.Pleasanter.Libraries.Html;
-using Implem.Pleasanter.Libraries.HtmlParts;
-using Implem.Pleasanter.Libraries.Models;
-using Implem.Pleasanter.Libraries.Requests;
-using Implem.Pleasanter.Libraries.Resources;
-using Implem.Pleasanter.Libraries.Responses;
-using Implem.Pleasanter.Libraries.Security;
-using Implem.Pleasanter.Libraries.Server;
-using Implem.Pleasanter.Libraries.Settings;
-using Implem.Pleasanter.Libraries.Web;
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Web;
-using static Implem.Pleasanter.Libraries.ServerScripts.ServerScriptModel;
-namespace Implem.Pleasanter.Models
-{
-    public static class ExportSettingUtilities
-    {
-    }
-}
diff --git a/Implem.Pleasanter/Models/ExportSettings/ExportSettingValidators.cs b/Implem.Pleasanter/Models/ExportSettings/ExportSettingValidators.cs
deleted file mode 100644
index 8eafdd1f7..000000000
--- a/Implem.Pleasanter/Models/ExportSettings/ExportSettingValidators.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Implem.DefinitionAccessor;
-using Implem.Libraries.Utilities;
-using Implem.Pleasanter.Libraries.DataTypes;
-using Implem.Pleasanter.Libraries.General;
-using Implem.Pleasanter.Libraries.Requests;
-using Implem.Pleasanter.Libraries.Security;
-using Implem.Pleasanter.Libraries.Settings;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text.RegularExpressions;
-namespace Implem.Pleasanter.Models
-{
-    public static class ExportSettingValidators
-    {
-    }
-}
diff --git a/Implem.Pleasanter/Models/Extensions/ExtensionModel.cs b/Implem.Pleasanter/Models/Extensions/ExtensionModel.cs
index 49094177e..df4688465 100644
--- a/Implem.Pleasanter/Models/Extensions/ExtensionModel.cs
+++ b/Implem.Pleasanter/Models/Extensions/ExtensionModel.cs
@@ -396,7 +396,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         extensionModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(ExtensionId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -476,7 +476,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteExtensions(
                     tableType: tableType,
-                    param: Rds.ExtensionsParam().ExtensionId(ExtensionId)));
+                    where: Rds.ExtensionsWhere().ExtensionId(ExtensionId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Groups/GroupModel.cs b/Implem.Pleasanter/Models/Groups/GroupModel.cs
index e7da277f8..ac33981d4 100644
--- a/Implem.Pleasanter/Models/Groups/GroupModel.cs
+++ b/Implem.Pleasanter/Models/Groups/GroupModel.cs
@@ -1341,7 +1341,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         groupModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(GroupId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -1644,7 +1644,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteGroups(
                     tableType: tableType,
-                    param: Rds.GroupsParam().GroupId(GroupId)));
+                    where: Rds.GroupsWhere().GroupId(GroupId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Issues/IssueExportModel.cs b/Implem.Pleasanter/Models/Issues/IssueExportModel.cs
index 91d73f8a3..25a92db91 100644
--- a/Implem.Pleasanter/Models/Issues/IssueExportModel.cs
+++ b/Implem.Pleasanter/Models/Issues/IssueExportModel.cs
@@ -341,9 +341,20 @@ public void ReplaceIdHash(string columnName, Dictionary<long, long> idHash)
                 case "Class":
                     Class(
                         columnName: columnName,
-                        value: idHash.Get(ClassHash.Get(columnName).ToLong()));
+                        value: ReplaceClassIdHash(ClassHash.Get(columnName),idHash));
                     break;
             }
         }
+
+        private static System.Text.RegularExpressions.Regex RegexIdPattern = new System.Text.RegularExpressions.Regex(@"\b(?<!\.)\d+(?!\.)\b");
+
+        private object ReplaceClassIdHash(object v, Dictionary<long, long> idHash)
+        {
+            return (v == null)
+                ? null
+                : RegexIdPattern.Replace(
+                    v.ToStr(),
+                    new System.Text.RegularExpressions.MatchEvaluator(m => idHash.Get(m.Value.ToLong()).ToStr()));
+        }
     }
 }
diff --git a/Implem.Pleasanter/Models/Issues/IssueModel.cs b/Implem.Pleasanter/Models/Issues/IssueModel.cs
index 80a10082d..608ce6877 100644
--- a/Implem.Pleasanter/Models/Issues/IssueModel.cs
+++ b/Implem.Pleasanter/Models/Issues/IssueModel.cs
@@ -2156,7 +2156,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         issueModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(IssueId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -2529,7 +2529,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteIssues(
                     tableType: tableType,
-                    param: Rds.IssuesParam().SiteId(SiteId).IssueId(IssueId)));
+                    where: Rds.IssuesWhere().SiteId(SiteId).IssueId(IssueId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Items/ItemModel.cs b/Implem.Pleasanter/Models/Items/ItemModel.cs
index 4d6023eca..5fc900a99 100644
--- a/Implem.Pleasanter/Models/Items/ItemModel.cs
+++ b/Implem.Pleasanter/Models/Items/ItemModel.cs
@@ -1262,6 +1262,13 @@ public string OpenSetDateRangeDialog(Context context)
                 var column = Site.SiteSettings.GetColumn(
                     context: context,
                     columnName: columnName);
+                if (column == null)
+                {
+                    Parameters.ExtendedFields.ForEach(extendedField =>
+                    {
+                        if (extendedField.Name == columnName) column = new Implem.Pleasanter.Libraries.Settings.Column(extendedField.Name);
+                    });
+                }
                 return new ResponseCollection(context: context)
                     .Html(
                         "#SetDateRangeDialog",
diff --git a/Implem.Pleasanter/Models/MailAddresses/MailAddressModel.cs b/Implem.Pleasanter/Models/MailAddresses/MailAddressModel.cs
index 19684a978..1daf25943 100644
--- a/Implem.Pleasanter/Models/MailAddresses/MailAddressModel.cs
+++ b/Implem.Pleasanter/Models/MailAddresses/MailAddressModel.cs
@@ -345,7 +345,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         mailAddressModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(MailAddressId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -425,7 +425,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteMailAddresses(
                     tableType: tableType,
-                    param: Rds.MailAddressesParam().MailAddressId(MailAddressId)));
+                    where: Rds.MailAddressesWhere().MailAddressId(MailAddressId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/OutgoingMails/OutgoingMailModel.cs b/Implem.Pleasanter/Models/OutgoingMails/OutgoingMailModel.cs
index 268d1f282..fe5808b68 100644
--- a/Implem.Pleasanter/Models/OutgoingMails/OutgoingMailModel.cs
+++ b/Implem.Pleasanter/Models/OutgoingMails/OutgoingMailModel.cs
@@ -466,7 +466,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         outgoingMailModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(OutgoingMailId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -546,7 +546,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteOutgoingMails(
                     tableType: tableType,
-                    param: Rds.OutgoingMailsParam().OutgoingMailId(OutgoingMailId)));
+                    where: Rds.OutgoingMailsWhere().OutgoingMailId(OutgoingMailId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Registrations/RegistrationModel.cs b/Implem.Pleasanter/Models/Registrations/RegistrationModel.cs
index 8a352cf50..c786435cb 100644
--- a/Implem.Pleasanter/Models/Registrations/RegistrationModel.cs
+++ b/Implem.Pleasanter/Models/Registrations/RegistrationModel.cs
@@ -1058,7 +1058,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         registrationModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(RegistrationId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -1138,7 +1138,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteRegistrations(
                     tableType: tableType,
-                    param: Rds.RegistrationsParam().RegistrationId(RegistrationId)));
+                    where: Rds.RegistrationsWhere().RegistrationId(RegistrationId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Results/ResultExportModel.cs b/Implem.Pleasanter/Models/Results/ResultExportModel.cs
index b8c2cd996..6354c8dd5 100644
--- a/Implem.Pleasanter/Models/Results/ResultExportModel.cs
+++ b/Implem.Pleasanter/Models/Results/ResultExportModel.cs
@@ -321,9 +321,20 @@ public void ReplaceIdHash(string columnName, Dictionary<long, long> idHash)
                 case "Class":
                     Class(
                         columnName: columnName,
-                        value: idHash.Get(ClassHash.Get(columnName).ToLong()));
+                        value: ReplaceClassIdHash(ClassHash.Get(columnName),idHash));
                     break;
             }
         }
+
+        private static System.Text.RegularExpressions.Regex RegexIdPattern = new System.Text.RegularExpressions.Regex(@"\b(?<!\.)\d+(?!\.)\b");
+
+        private object ReplaceClassIdHash(object v, Dictionary<long, long> idHash)
+        {
+            return (v == null)
+                ? null
+                : RegexIdPattern.Replace(
+                    v.ToStr(),
+                    new System.Text.RegularExpressions.MatchEvaluator(m => idHash.Get(m.Value.ToLong()).ToStr()));
+        }
     }
 }
diff --git a/Implem.Pleasanter/Models/Results/ResultModel.cs b/Implem.Pleasanter/Models/Results/ResultModel.cs
index b60e173a9..43281968d 100644
--- a/Implem.Pleasanter/Models/Results/ResultModel.cs
+++ b/Implem.Pleasanter/Models/Results/ResultModel.cs
@@ -1911,7 +1911,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         resultModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(ResultId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -2284,7 +2284,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteResults(
                     tableType: tableType,
-                    param: Rds.ResultsParam().SiteId(SiteId).ResultId(ResultId)));
+                    where: Rds.ResultsWhere().SiteId(SiteId).ResultId(ResultId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Sites/SiteModel.cs b/Implem.Pleasanter/Models/Sites/SiteModel.cs
index ae4eb6efd..ffba9a1c0 100644
--- a/Implem.Pleasanter/Models/Sites/SiteModel.cs
+++ b/Implem.Pleasanter/Models/Sites/SiteModel.cs
@@ -1298,7 +1298,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         siteModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(SiteId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -1486,7 +1486,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteSites(
                     tableType: tableType,
-                    param: Rds.SitesParam().TenantId(TenantId).SiteId(SiteId)));
+                    where: Rds.SitesWhere().TenantId(TenantId).SiteId(SiteId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Sites/SiteUtilities.cs b/Implem.Pleasanter/Models/Sites/SiteUtilities.cs
index 9dd708b89..990a21409 100644
--- a/Implem.Pleasanter/Models/Sites/SiteUtilities.cs
+++ b/Implem.Pleasanter/Models/Sites/SiteUtilities.cs
@@ -14370,11 +14370,12 @@ public static HtmlBuilder StyleDialog(
                         labelText: Displays.Title(context: context),
                         text: style.Title,
                         validateRequired: true)
-                    .FieldTextBox(
-                        textType: HtmlTypes.TextTypes.MultiLine,
+                    .FieldCodeEditor(
+                        context: context,
                         controlId: "StyleBody",
                         fieldCss: "field-wide",
                         controlCss: " always-send",
+                        dataLang: "css",
                         labelText: Displays.Style(context: context),
                         text: style.Body)
                     .FieldCheckBox(
@@ -14753,11 +14754,12 @@ public static HtmlBuilder ScriptDialog(
                         labelText: Displays.Title(context: context),
                         text: script.Title,
                         validateRequired: true)
-                    .FieldTextBox(
-                        textType: HtmlTypes.TextTypes.MultiLine,
+                    .FieldCodeEditor(
+                        context: context,
                         controlId: "ScriptBody",
                         fieldCss: "field-wide",
                         controlCss: " always-send",
+                        dataLang: "javascript",
                         labelText: Displays.Script(context: context),
                         text: script.Body)
                     .FieldCheckBox(
@@ -15188,11 +15190,12 @@ public static HtmlBuilder HtmlDialog(
                         },
                         selectedValue: html.PositionType.ToInt().ToString(),
                         insertBlank: false)
-                    .FieldTextBox(
-                        textType: HtmlTypes.TextTypes.MultiLine,
+                    .FieldCodeEditor(
+                        context: context,
                         controlId: "HtmlBody",
                         fieldCss: "field-wide",
                         controlCss: " always-send",
+                        dataLang: "html",
                         labelText: Displays.Html(context: context),
                         text: html.Body)
                     .FieldCheckBox(
@@ -15560,11 +15563,12 @@ public static HtmlBuilder ServerScriptDialog(
                         controlCss: " always-send",
                         labelText: Displays.Name(context: context),
                         text: script.Name)
-                    .FieldTextBox(
-                        textType: HtmlTypes.TextTypes.MultiLine,
+                    .FieldCodeEditor(
+                        context: context,
                         controlId: "ServerScriptBody",
                         fieldCss: "field-wide",
                         controlCss: " always-send",
+                        dataLang: "javascript",
                         labelText: Displays.Script(context: context),
                         text: script.Body)
                     .FieldSpinner(
diff --git a/Implem.Pleasanter/Models/SysLogs/SysLogModel.cs b/Implem.Pleasanter/Models/SysLogs/SysLogModel.cs
index 3e3cbea54..7e6f2926f 100644
--- a/Implem.Pleasanter/Models/SysLogs/SysLogModel.cs
+++ b/Implem.Pleasanter/Models/SysLogs/SysLogModel.cs
@@ -2498,7 +2498,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         sysLogModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(SysLogId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
diff --git a/Implem.Pleasanter/Models/Tenants/TenantModel.cs b/Implem.Pleasanter/Models/Tenants/TenantModel.cs
index e79fbaccf..bdee58092 100644
--- a/Implem.Pleasanter/Models/Tenants/TenantModel.cs
+++ b/Implem.Pleasanter/Models/Tenants/TenantModel.cs
@@ -843,7 +843,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         tenantModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(TenantId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -928,7 +928,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteTenants(
                     tableType: tableType,
-                    param: Rds.TenantsParam().TenantId(TenantId)));
+                    where: Rds.TenantsWhere().TenantId(TenantId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Tenants/TenantUtilities.cs b/Implem.Pleasanter/Models/Tenants/TenantUtilities.cs
index d333546d2..c4dec1528 100644
--- a/Implem.Pleasanter/Models/Tenants/TenantUtilities.cs
+++ b/Implem.Pleasanter/Models/Tenants/TenantUtilities.cs
@@ -1701,7 +1701,8 @@ private static HtmlBuilder FieldSetServerScript(
                 action: () => hb
                     .ServerScriptsSettingsEditor(
                         context: context, tenantModel: tenantModel),
-                _using: context.ContractSettings.ServerScript != false
+                _using: context.HasPrivilege != false
+                    && context.ContractSettings.ServerScript != false
                     && Parameters.Script.ServerScript != false
                     && Parameters.Script.BackgroundServerScript != false);
         }
@@ -1712,8 +1713,6 @@ private static HtmlBuilder FieldSetServerScript(
         private static HtmlBuilder ServerScriptsSettingsEditor(
             this HtmlBuilder hb, Context context, TenantModel tenantModel)
         {
-            if (context.ContractSettings.ServerScript == false
-                || Parameters.Script.ServerScript == false) return hb;
             return hb.FieldSet(id: "ServerScriptsSettingsEditor", action: () => hb
                 .Div(css: "command-left", action: () => hb
                     .Button(
diff --git a/Implem.Pleasanter/Models/Users/UserModel.cs b/Implem.Pleasanter/Models/Users/UserModel.cs
index de77e0cfd..1c7e45a78 100644
--- a/Implem.Pleasanter/Models/Users/UserModel.cs
+++ b/Implem.Pleasanter/Models/Users/UserModel.cs
@@ -3006,7 +3006,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         userModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(UserId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -3076,7 +3076,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteUsers(
                     tableType: tableType,
-                    param: Rds.UsersParam().UserId(UserId)));
+                    where: Rds.UsersWhere().UserId(UserId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Models/Wikis/WikiModel.cs b/Implem.Pleasanter/Models/Wikis/WikiModel.cs
index 157b2c211..b9d7f2beb 100644
--- a/Implem.Pleasanter/Models/Wikis/WikiModel.cs
+++ b/Implem.Pleasanter/Models/Wikis/WikiModel.cs
@@ -927,7 +927,7 @@ private List<SqlStatement> UpdateStatements(
                         ss: ss,
                         wikiModel: this,
                         otherInitValue: otherInitValue)),
-                new SqlStatement(Def.Sql.IfConflicted.Params(WikiId))
+                new SqlStatement()
                 {
                     DataTableName = dataTableName,
                     IfConflicted = true,
@@ -1124,7 +1124,7 @@ public ErrorData PhysicalDelete(
                 transactional: true,
                 statements: Rds.PhysicalDeleteWikis(
                     tableType: tableType,
-                    param: Rds.WikisParam().SiteId(SiteId).WikiId(WikiId)));
+                    where: Rds.WikisWhere().SiteId(SiteId).WikiId(WikiId)));
             return new ErrorData(type: Error.Types.None);
         }
 
diff --git a/Implem.Pleasanter/Startup.cs b/Implem.Pleasanter/Startup.cs
index 1a343bae7..2a6d2d4ea 100644
--- a/Implem.Pleasanter/Startup.cs
+++ b/Implem.Pleasanter/Startup.cs
@@ -619,6 +619,10 @@ public static IHealthChecksBuilder AddDatabaseHealthCheck(
                     return services.AddNpgSql(
                         connectionString: conStr,
                         healthQuery: healthQuery);
+                case "MySQL":
+                    return services.AddMySql(
+                        connectionString: conStr,
+                        healthQuery: healthQuery);
                 default:
                     return services;
             }
diff --git a/Implem.Pleasanter/wwwroot/scripts/plugins/components.bundle.js b/Implem.Pleasanter/wwwroot/scripts/plugins/components.bundle.js
new file mode 100644
index 000000000..1322a3889
--- /dev/null
+++ b/Implem.Pleasanter/wwwroot/scripts/plugins/components.bundle.js
@@ -0,0 +1 @@
+import{c as O,S as k,i as A,f as m,s as D,a as M,e as T,b as x,d as j,n as S,g as N,h as H,o as P,j as G,m as I,k as K,E as Q,l as q,p as V,q as W,r as J,t as R,u as U,v as X,w as Y,x as Z,y as $,z as ee,A as te,B as C,C as se,D as ne,F as p,G as L,H as re}from"./vendor.bundle.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))d(s);new MutationObserver(s=>{for(const c of s)if(c.type==="childList")for(const i of c.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&d(i)}).observe(document,{childList:!0,subtree:!0});function t(s){const c={};return s.integrity&&(c.integrity=s.integrity),s.referrerPolicy&&(c.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?c.credentials="include":s.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function d(s){if(s.ep)return;s.ep=!0;const c=t(s);fetch(s.href,c)}})();function ie(r){M(r,"svelte-g7kxok",".codemirror.svelte-g7kxok{display:contents}")}function oe(r){let e;return{c(){e=T("div"),x(e,"class","codemirror svelte-g7kxok")},m(t,d){j(t,e,d),r[7](e)},p:S,i:S,o:S,d(t){t&&N(e),r[7](null)}}}function ce(r,e,t){const d=H();let s,c=!1;P(()=>(t(6,c=!0),()=>{t(6,c=!1)}));let{view:i=null}=e,{doc:o}=e,{verbose:l=!1}=e,f=null;function y(n){i.dispatch({changes:{from:0,to:i.state.doc.length,insert:n}})}const h=new Set,b={ready:()=>i!==null,subscribe(n){return h.add(n),this.ready()?(f==null&&(f=i.state.doc.toString()),n(f)):n(null),()=>void h.delete(n)},set(n){if(!c)throw new Error("Cannot set docStore when the component is not mounted.");u(n)||y(n)}};let{extensions:a=I}=e;function E(){i!==null&&i.dispatch({effects:K.reconfigure.of(a)})}function g(n,_){_.update(n),l&&d("update",n);let w;(w=n.findLast(F=>F.docChanged))&&(f=null,h.size&&v(f=w.newDoc.toString()),d("change",{view:_,trs:n}))}function v(n){for(const _ of h)_(n)}function u(n){return i!==null?!1:(t(1,i=new Q({doc:n,extensions:a,parent:s,dispatchTransactions:g})),!0)}G(()=>{i!==null&&i.destroy()});function B(n){q[n?"unshift":"push"](()=>{s=n,t(0,s)})}return r.$$set=n=>{"view"in n&&t(1,i=n.view),"doc"in n&&t(2,o=n.doc),"verbose"in n&&t(3,l=n.verbose),"extensions"in n&&t(5,a=n.extensions)},r.$$.update=()=>{r.$$.dirty&32&&E(),r.$$.dirty&68&&c&&o!==void 0&&(u(o),v(o))},[s,i,o,l,b,a,c,B]}class z extends k{constructor(e){super(),A(this,e,ce,oe,D,{view:1,doc:2,verbose:3,docStore:4,extensions:5},ie)}get view(){return this.$$.ctx[1]}set view(e){this.$$set({view:e}),m()}get doc(){return this.$$.ctx[2]}set doc(e){this.$$set({doc:e}),m()}get verbose(){return this.$$.ctx[3]}set verbose(e){this.$$set({verbose:e}),m()}get docStore(){return this.$$.ctx[4]}get extensions(){return this.$$.ctx[5]}set extensions(e){this.$$set({extensions:e}),m()}}O(z,{view:{},doc:{},verbose:{type:"Boolean"},extensions:{}},[],["docStore"],!0);function ae(r){M(r,"svelte-tg6sth",'.c-codeMirror.svelte-tg6sth{min-height:40vh;max-height:70vh;border:1px solid #aaa}.codemirror,.cm-editor,.cm-scroller{min-height:inherit;max-height:inherit}.cm-line{font-size:15px;font-family:Consolas, "Courier New", monospace}button[name=close]{color:#fff}')}function de(r){let e,t,d,s;function c(o){r[9](o)}let i={doc:r[2],extensions:[V,r[3],W,J.of([R])]};return r[1]!==void 0&&(i.docStore=r[1]),t=new z({props:i}),q.push(()=>U(t,"docStore",c)),{c(){e=T("div"),X(t.$$.fragment),x(e,"class","c-codeMirror svelte-tg6sth"),x(e,"part","editor"),x(e,"style",r[0])},m(o,l){j(o,e,l),Y(t,e,null),s=!0},p(o,[l]){const f={};!d&&l&2&&(d=!0,f.docStore=o[1],Z(()=>d=!1)),t.$set(f),(!s||l&1)&&x(e,"style",o[0])},i(o){s||($(t.$$.fragment,o),s=!0)},o(o){ee(t.$$.fragment,o),s=!1},d(o){o&&N(e),te(t)}}}function ue(r,e,t){let d,s=S,c=()=>(s(),s=re(g,u=>t(8,d=u)),g);r.$$.on_destroy.push(()=>s());let{myElem:i}=e,{id:o}=e,{lang:l=i.dataset.lang||void 0}=e,{style:f}=e;const y=window.$p,h=window.$;let b=i.textContent||"",a=document.createElement("textarea");const E=(()=>{switch(l){case"html":return ne();case"css":return se();case"javascript":return C();default:return C()}})();P(()=>{if(!o)return!1;i.removeAttribute("id"),a.setAttribute("id",o),e.name&&a.setAttribute("name",e.name),e.class&&a.setAttribute("class",e.class),t(7,a.style.display="none",a),t(7,a.readOnly=!0,a),t(7,a.value=b,a),i.append(a),y&&y.set(h(a),b)});let g;function v(u){g=u,c(t(1,g))}return r.$$set=u=>{t(12,e=p(p({},e),L(u))),"myElem"in u&&t(4,i=u.myElem),"id"in u&&t(5,o=u.id),"lang"in u&&t(6,l=u.lang),"style"in u&&t(0,f=u.style)},r.$$.update=()=>{r.$$.dirty&384&&d&&(t(7,a.value=d,a),y&&y.set(h(a),d))},e=L(e),[f,g,b,E,i,o,l,a,d,v]}class le extends k{constructor(e){super(),A(this,e,ue,de,D,{myElem:4,id:5,lang:6,style:0},ae)}get myElem(){return this.$$.ctx[4]}set myElem(e){this.$$set({myElem:e}),m()}get id(){return this.$$.ctx[5]}set id(e){this.$$set({id:e}),m()}get lang(){return this.$$.ctx[6]}set lang(e){this.$$set({lang:e}),m()}get style(){return this.$$.ctx[0]}set style(e){this.$$set({style:e}),m()}}customElements.define("code-editor",O(le,{myElem:{},id:{},lang:{},style:{}},[],[],!0,r=>class extends r{constructor(){super(),this.myElem=this}}));
diff --git a/Implem.Pleasanter/wwwroot/scripts/plugins/d3.min.js b/Implem.Pleasanter/wwwroot/scripts/plugins/d3.min.js
index 344d26ccb..beebb4801 100644
--- a/Implem.Pleasanter/wwwroot/scripts/plugins/d3.min.js
+++ b/Implem.Pleasanter/wwwroot/scripts/plugins/d3.min.js
@@ -1,2 +1,2 @@
 // https://d3js.org v5.16.0 Copyright 2020 Mike Bostock
-!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t=t||self).d3=t.d3||{})}(this,function(t){"use strict";function n(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function e(t){var e;return 1===t.length&&(e=t,t=function(t,r){return n(e(t),r)}),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}var r=e(n),i=r.right,o=r.left;function a(t,n){return[t,n]}function u(t){return null===t?NaN:+t}function c(t,n){var e,r,i=t.length,o=0,a=-1,c=0,f=0;if(null==n)for(;++a<i;)isNaN(e=u(t[a]))||(f+=(r=e-c)*(e-(c+=r/++o)));else for(;++a<i;)isNaN(e=u(n(t[a],a,t)))||(f+=(r=e-c)*(e-(c+=r/++o)));if(o>1)return f/(o-1)}function f(t,n){var e=c(t,n);return e?Math.sqrt(e):e}function s(t,n){var e,r,i,o=t.length,a=-1;if(null==n){for(;++a<o;)if(null!=(e=t[a])&&e>=e)for(r=i=e;++a<o;)null!=(e=t[a])&&(r>e&&(r=e),i<e&&(i=e))}else for(;++a<o;)if(null!=(e=n(t[a],a,t))&&e>=e)for(r=i=e;++a<o;)null!=(e=n(t[a],a,t))&&(r>e&&(r=e),i<e&&(i=e));return[r,i]}var l=Array.prototype,h=l.slice,d=l.map;function p(t){return function(){return t}}function v(t){return t}function g(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}var y=Math.sqrt(50),_=Math.sqrt(10),b=Math.sqrt(2);function m(t,n,e){var r,i,o,a,u=-1;if(e=+e,(t=+t)===(n=+n)&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(a=x(t,n,e))||!isFinite(a))return[];if(a>0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(i=Math.ceil(n-t+1));++u<i;)o[u]=(t+u)*a;else for(t=Math.floor(t*a),n=Math.ceil(n*a),o=new Array(i=Math.ceil(t-n+1));++u<i;)o[u]=(t-u)/a;return r&&o.reverse(),o}function x(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=y?10:o>=_?5:o>=b?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=y?10:o>=_?5:o>=b?2:1)}function w(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=y?i*=10:o>=_?i*=5:o>=b&&(i*=2),n<t?-i:i}function M(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}function N(t,n,e){if(null==e&&(e=u),r=t.length){if((n=+n)<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),a=+e(t[o],o,t);return a+(+e(t[o+1],o+1,t)-a)*(i-o)}}function T(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&e>r&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&e>r&&(r=e);return r}function A(t){for(var n,e,r,i=t.length,o=-1,a=0;++o<i;)a+=t[o].length;for(e=new Array(a);--i>=0;)for(n=(r=t[i]).length;--n>=0;)e[--a]=r[n];return e}function S(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&r>e&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&r>e&&(r=e);return r}function k(t){if(!(i=t.length))return[];for(var n=-1,e=S(t,E),r=new Array(e);++n<e;)for(var i,o=-1,a=r[n]=new Array(i);++o<i;)a[o]=t[o][n];return r}function E(t){return t.length}var C=Array.prototype.slice;function P(t){return t}var z=1,R=2,D=3,q=4,L=1e-6;function U(t){return"translate("+(t+.5)+",0)"}function O(t){return"translate(0,"+(t+.5)+")"}function B(){return!this.__axis}function F(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c=t===z||t===q?-1:1,f=t===q||t===R?"x":"y",s=t===z||t===D?U:O;function l(l){var h=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,d=null==i?n.tickFormat?n.tickFormat.apply(n,e):P:i,p=Math.max(o,0)+u,v=n.range(),g=+v[0]+.5,y=+v[v.length-1]+.5,_=(n.bandwidth?function(t){var n=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(n=Math.round(n)),function(e){return+t(e)+n}}:function(t){return function(n){return+t(n)}})(n.copy()),b=l.selection?l.selection():l,m=b.selectAll(".domain").data([null]),x=b.selectAll(".tick").data(h,n).order(),w=x.exit(),M=x.enter().append("g").attr("class","tick"),N=x.select("line"),T=x.select("text");m=m.merge(m.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),x=x.merge(M),N=N.merge(M.append("line").attr("stroke","currentColor").attr(f+"2",c*o)),T=T.merge(M.append("text").attr("fill","currentColor").attr(f,c*p).attr("dy",t===z?"0em":t===D?"0.71em":"0.32em")),l!==b&&(m=m.transition(l),x=x.transition(l),N=N.transition(l),T=T.transition(l),w=w.transition(l).attr("opacity",L).attr("transform",function(t){return isFinite(t=_(t))?s(t):this.getAttribute("transform")}),M.attr("opacity",L).attr("transform",function(t){var n=this.parentNode.__axis;return s(n&&isFinite(n=n(t))?n:_(t))})),w.remove(),m.attr("d",t===q||t==R?a?"M"+c*a+","+g+"H0.5V"+y+"H"+c*a:"M0.5,"+g+"V"+y:a?"M"+g+","+c*a+"V0.5H"+y+"V"+c*a:"M"+g+",0.5H"+y),x.attr("opacity",1).attr("transform",function(t){return s(_(t))}),N.attr(f+"2",c*o),T.attr(f,c*p).text(d),b.filter(B).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===R?"start":t===q?"end":"middle"),b.each(function(){this.__axis=_})}return l.scale=function(t){return arguments.length?(n=t,l):n},l.ticks=function(){return e=C.call(arguments),l},l.tickArguments=function(t){return arguments.length?(e=null==t?[]:C.call(t),l):e.slice()},l.tickValues=function(t){return arguments.length?(r=null==t?null:C.call(t),l):r&&r.slice()},l.tickFormat=function(t){return arguments.length?(i=t,l):i},l.tickSize=function(t){return arguments.length?(o=a=+t,l):o},l.tickSizeInner=function(t){return arguments.length?(o=+t,l):o},l.tickSizeOuter=function(t){return arguments.length?(a=+t,l):a},l.tickPadding=function(t){return arguments.length?(u=+t,l):u},l}var Y={value:function(){}};function I(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new H(r)}function H(t){this._=t}function j(t,n){return t.trim().split(/^|\s+/).map(function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}function X(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function V(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=Y,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}H.prototype=I.prototype={constructor:H,on:function(t,n){var e,r=this._,i=j(t+"",r),o=-1,a=i.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<a;)if(e=(t=i[o]).type)r[e]=V(r[e],t.name,n);else if(null==n)for(e in r)r[e]=V(r[e],t.name,null);return this}for(;++o<a;)if((e=(t=i[o]).type)&&(e=X(r[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new H(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};var G="http://www.w3.org/1999/xhtml",$={svg:"http://www.w3.org/2000/svg",xhtml:G,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function W(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),$.hasOwnProperty(n)?{space:$[n],local:t}:t}function Z(t){var n=W(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===G&&n.documentElement.namespaceURI===G?n.createElement(t):n.createElementNS(e,t)}})(n)}function Q(){}function K(t){return null==t?Q:function(){return this.querySelector(t)}}function J(){return[]}function tt(t){return null==t?J:function(){return this.querySelectorAll(t)}}function nt(t){return function(){return this.matches(t)}}function et(t){return new Array(t.length)}function rt(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}rt.prototype={constructor:rt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var it="$";function ot(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;u<f;++u)(a=n[u])?(a.__data__=o[u],r[u]=a):e[u]=new rt(t,o[u]);for(;u<c;++u)(a=n[u])&&(i[u]=a)}function at(t,n,e,r,i,o,a){var u,c,f,s={},l=n.length,h=o.length,d=new Array(l);for(u=0;u<l;++u)(c=n[u])&&(d[u]=f=it+a.call(c,c.__data__,u,n),f in s?i[u]=c:s[f]=c);for(u=0;u<h;++u)(c=s[f=it+a.call(t,o[u],u,o)])?(r[u]=c,c.__data__=o[u],s[f]=null):e[u]=new rt(t,o[u]);for(u=0;u<l;++u)(c=n[u])&&s[d[u]]===c&&(i[u]=c)}function ut(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function ct(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ft(t,n){return t.style.getPropertyValue(n)||ct(t).getComputedStyle(t,null).getPropertyValue(n)}function st(t){return t.trim().split(/^|\s+/)}function lt(t){return t.classList||new ht(t)}function ht(t){this._node=t,this._names=st(t.getAttribute("class")||"")}function dt(t,n){for(var e=lt(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function pt(t,n){for(var e=lt(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function vt(){this.textContent=""}function gt(){this.innerHTML=""}function yt(){this.nextSibling&&this.parentNode.appendChild(this)}function _t(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function bt(){return null}function mt(){var t=this.parentNode;t&&t.removeChild(this)}function xt(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function wt(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}ht.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Mt={};(t.event=null,"undefined"!=typeof document)&&("onmouseenter"in document.documentElement||(Mt={mouseenter:"mouseover",mouseleave:"mouseout"}));function Nt(t,n,e){return t=Tt(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function Tt(n,e,r){return function(i){var o=t.event;t.event=i;try{n.call(this,this.__data__,e,r)}finally{t.event=o}}}function At(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.capture);++i?n.length=i:delete this.__on}}}function St(t,n,e){var r=Mt.hasOwnProperty(t.type)?Nt:Tt;return function(i,o,a){var u,c=this.__on,f=r(n,o,a);if(c)for(var s=0,l=c.length;s<l;++s)if((u=c[s]).type===t.type&&u.name===t.name)return this.removeEventListener(u.type,u.listener,u.capture),this.addEventListener(u.type,u.listener=f,u.capture=e),void(u.value=n);this.addEventListener(t.type,f,e),u={type:t.type,name:t.name,value:n,listener:f,capture:e},c?c.push(u):this.__on=[u]}}function kt(n,e,r,i){var o=t.event;n.sourceEvent=t.event,t.event=n;try{return e.apply(r,i)}finally{t.event=o}}function Et(t,n,e){var r=ct(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}var Ct=[null];function Pt(t,n){this._groups=t,this._parents=n}function zt(){return new Pt([[document.documentElement]],Ct)}function Rt(t){return"string"==typeof t?new Pt([[document.querySelector(t)]],[document.documentElement]):new Pt([[t]],Ct)}Pt.prototype=zt.prototype={constructor:Pt,select:function(t){"function"!=typeof t&&(t=K(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a,u=n[i],c=u.length,f=r[i]=new Array(c),s=0;s<c;++s)(o=u[s])&&(a=t.call(o,o.__data__,s,u))&&("__data__"in o&&(a.__data__=o.__data__),f[s]=a);return new Pt(r,this._parents)},selectAll:function(t){"function"!=typeof t&&(t=tt(t));for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var a,u=n[o],c=u.length,f=0;f<c;++f)(a=u[f])&&(r.push(t.call(a,a.__data__,f,u)),i.push(a));return new Pt(r,i)},filter:function(t){"function"!=typeof t&&(t=nt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Pt(r,this._parents)},data:function(t,n){if(!t)return d=new Array(this.size()),f=-1,this.each(function(t){d[++f]=t}),d;var e=n?at:ot,r=this._parents,i=this._groups;"function"!=typeof t&&(t=function(t){return function(){return t}}(t));for(var o=i.length,a=new Array(o),u=new Array(o),c=new Array(o),f=0;f<o;++f){var s=r[f],l=i[f],h=l.length,d=t.call(s,s&&s.__data__,f,r),p=d.length,v=u[f]=new Array(p),g=a[f]=new Array(p);e(s,l,v,g,c[f]=new Array(h),d,n);for(var y,_,b=0,m=0;b<p;++b)if(y=v[b]){for(b>=m&&(m=b+1);!(_=g[m])&&++m<p;);y._next=_||null}}return(a=new Pt(a,r))._enter=u,a._exit=c,a},enter:function(){return new Pt(this._enter||this._groups.map(et),this._parents)},exit:function(){return new Pt(this._exit||this._groups.map(et),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return r="function"==typeof t?t(r):r.append(t+""),null!=n&&(i=n(i)),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new Pt(a,this._parents)},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=ut);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var a,u=e[o],c=u.length,f=i[o]=new Array(c),s=0;s<c;++s)(a=u[s])&&(f[s]=a);f.sort(n)}return new Pt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),n=-1;return this.each(function(){t[++n]=this}),t},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){var t=0;return this.each(function(){++t}),t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,n){var e=W(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}}:"function"==typeof n?e.local?function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}:function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}:e.local?function(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}:function(t,n){return function(){this.setAttribute(t,n)}})(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?"":e)):ft(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:"function"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=st(t+"");if(arguments.length<2){for(var r=lt(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?function(t,n){return function(){(n.apply(this,arguments)?dt:pt)(this,t)}}:n?function(t){return function(){dt(this,t)}}:function(t){return function(){pt(this,t)}})(e,n))},text:function(t){return arguments.length?this.each(null==t?vt:("function"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}:function(t){return function(){this.textContent=t}})(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?gt:("function"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}:function(t){return function(){this.innerHTML=t}})(t)):this.node().innerHTML},raise:function(){return this.each(yt)},lower:function(){return this.each(_t)},append:function(t){var n="function"==typeof t?t:Z(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})},insert:function(t,n){var e="function"==typeof t?t:Z(t),r=null==n?bt:"function"==typeof n?n:K(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(mt)},clone:function(t){return this.select(t?wt:xt)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=function(t){return t.trim().split(/^|\s+/).map(function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?St:At,null==e&&(e=!1),r=0;r<a;++r)this.each(u(o[r],n,e));return this}var u=this.node().__on;if(u)for(var c,f=0,s=u.length;f<s;++f)for(r=0,c=u[f];r<a;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,n){return this.each(("function"==typeof n?function(t,n){return function(){return Et(this,t,n.apply(this,arguments))}}:function(t,n){return function(){return Et(this,t,n)}})(t,n))}};var Dt=0;function qt(){return new Lt}function Lt(){this._="@"+(++Dt).toString(36)}function Ut(){for(var n,e=t.event;n=e.sourceEvent;)e=n;return e}function Ot(t,n){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=n.clientX,r.y=n.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]}function Bt(t){var n=Ut();return n.changedTouches&&(n=n.changedTouches[0]),Ot(t,n)}function Ft(t,n,e){arguments.length<3&&(e=n,n=Ut().changedTouches);for(var r,i=0,o=n?n.length:0;i<o;++i)if((r=n[i]).identifier===e)return Ot(t,r);return null}function Yt(){t.event.stopImmediatePropagation()}function It(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function Ht(t){var n=t.document.documentElement,e=Rt(t).on("dragstart.drag",It,!0);"onselectstart"in n?e.on("selectstart.drag",It,!0):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function jt(t,n){var e=t.document.documentElement,r=Rt(t).on("dragstart.drag",null);n&&(r.on("click.drag",It,!0),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}function Xt(t){return function(){return t}}function Vt(t,n,e,r,i,o,a,u,c,f){this.target=t,this.type=n,this.subject=e,this.identifier=r,this.active=i,this.x=o,this.y=a,this.dx=u,this.dy=c,this._=f}function Gt(){return!t.event.ctrlKey&&!t.event.button}function $t(){return this.parentNode}function Wt(n){return null==n?{x:t.event.x,y:t.event.y}:n}function Zt(){return navigator.maxTouchPoints||"ontouchstart"in this}function Qt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Kt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Jt(){}Lt.prototype=qt.prototype={constructor:Lt,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}},Vt.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var tn="\\s*([+-]?\\d+)\\s*",nn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",en="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",rn=/^#([0-9a-f]{3,8})$/,on=new RegExp("^rgb\\("+[tn,tn,tn]+"\\)$"),an=new RegExp("^rgb\\("+[en,en,en]+"\\)$"),un=new RegExp("^rgba\\("+[tn,tn,tn,nn]+"\\)$"),cn=new RegExp("^rgba\\("+[en,en,en,nn]+"\\)$"),fn=new RegExp("^hsl\\("+[nn,en,en]+"\\)$"),sn=new RegExp("^hsla\\("+[nn,en,en,nn]+"\\)$"),ln={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function hn(){return this.rgb().formatHex()}function dn(){return this.rgb().formatRgb()}function pn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=rn.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?vn(n):3===e?new bn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?gn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?gn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=on.exec(t))?new bn(n[1],n[2],n[3],1):(n=an.exec(t))?new bn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=un.exec(t))?gn(n[1],n[2],n[3],n[4]):(n=cn.exec(t))?gn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=fn.exec(t))?Mn(n[1],n[2]/100,n[3]/100,1):(n=sn.exec(t))?Mn(n[1],n[2]/100,n[3]/100,n[4]):ln.hasOwnProperty(t)?vn(ln[t]):"transparent"===t?new bn(NaN,NaN,NaN,0):null}function vn(t){return new bn(t>>16&255,t>>8&255,255&t,1)}function gn(t,n,e,r){return r<=0&&(t=n=e=NaN),new bn(t,n,e,r)}function yn(t){return t instanceof Jt||(t=pn(t)),t?new bn((t=t.rgb()).r,t.g,t.b,t.opacity):new bn}function _n(t,n,e,r){return 1===arguments.length?yn(t):new bn(t,n,e,null==r?1:r)}function bn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function mn(){return"#"+wn(this.r)+wn(this.g)+wn(this.b)}function xn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function wn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Mn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new An(t,n,e,r)}function Nn(t){if(t instanceof An)return new An(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=pn(t)),!t)return new An;if(t instanceof An)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e<r):e===o?(r-n)/u+2:(n-e)/u+4,u/=c<.5?o+i:2-o-i,a*=60):u=c>0&&c<1?0:a,new An(a,u,c,t.opacity)}function Tn(t,n,e,r){return 1===arguments.length?Nn(t):new An(t,n,e,null==r?1:r)}function An(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}Qt(Jt,pn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:hn,formatHex:hn,formatHsl:function(){return Nn(this).formatHsl()},formatRgb:dn,toString:dn}),Qt(bn,_n,Kt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:mn,formatHex:mn,formatRgb:xn,toString:xn})),Qt(An,Tn,Kt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new An(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new An(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new bn(Sn(t>=240?t-240:t+120,i,r),Sn(t,i,r),Sn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var kn=Math.PI/180,En=180/Math.PI,Cn=.96422,Pn=1,zn=.82521,Rn=4/29,Dn=6/29,qn=3*Dn*Dn,Ln=Dn*Dn*Dn;function Un(t){if(t instanceof Bn)return new Bn(t.l,t.a,t.b,t.opacity);if(t instanceof Vn)return Gn(t);t instanceof bn||(t=yn(t));var n,e,r=Hn(t.r),i=Hn(t.g),o=Hn(t.b),a=Fn((.2225045*r+.7168786*i+.0606169*o)/Pn);return r===i&&i===o?n=e=a:(n=Fn((.4360747*r+.3850649*i+.1430804*o)/Cn),e=Fn((.0139322*r+.0971045*i+.7141733*o)/zn)),new Bn(116*a-16,500*(n-a),200*(a-e),t.opacity)}function On(t,n,e,r){return 1===arguments.length?Un(t):new Bn(t,n,e,null==r?1:r)}function Bn(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Fn(t){return t>Ln?Math.pow(t,1/3):t/qn+Rn}function Yn(t){return t>Dn?t*t*t:qn*(t-Rn)}function In(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Hn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function jn(t){if(t instanceof Vn)return new Vn(t.h,t.c,t.l,t.opacity);if(t instanceof Bn||(t=Un(t)),0===t.a&&0===t.b)return new Vn(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*En;return new Vn(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Xn(t,n,e,r){return 1===arguments.length?jn(t):new Vn(t,n,e,null==r?1:r)}function Vn(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function Gn(t){if(isNaN(t.h))return new Bn(t.l,0,0,t.opacity);var n=t.h*kn;return new Bn(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}Qt(Bn,On,Kt(Jt,{brighter:function(t){return new Bn(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Bn(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new bn(In(3.1338561*(n=Cn*Yn(n))-1.6168667*(t=Pn*Yn(t))-.4906146*(e=zn*Yn(e))),In(-.9787684*n+1.9161415*t+.033454*e),In(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),Qt(Vn,Xn,Kt(Jt,{brighter:function(t){return new Vn(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Vn(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Gn(this).rgb()}}));var $n=-.14861,Wn=1.78277,Zn=-.29227,Qn=-.90649,Kn=1.97294,Jn=Kn*Qn,te=Kn*Wn,ne=Wn*Zn-Qn*$n;function ee(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof re)return new re(t.h,t.s,t.l,t.opacity);t instanceof bn||(t=yn(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(ne*r+Jn*n-te*e)/(ne+Jn-te),o=r-i,a=(Kn*(e-i)-Zn*o)/Qn,u=Math.sqrt(a*a+o*o)/(Kn*i*(1-i)),c=u?Math.atan2(a,o)*En-120:NaN;return new re(c<0?c+360:c,u,i,t.opacity)}(t):new re(t,n,e,null==r?1:r)}function re(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function ie(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}function oe(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<n-1?t[r+2]:2*o-i;return ie((e-r/n)*n,a,i,o,u)}}function ae(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],a=t[(r+1)%n],u=t[(r+2)%n];return ie((e-r/n)*n,i,o,a,u)}}function ue(t){return function(){return t}}function ce(t,n){return function(e){return t+e*n}}function fe(t,n){var e=n-t;return e?ce(t,e>180||e<-180?e-360*Math.round(e/360):e):ue(isNaN(t)?n:t)}function se(t){return 1==(t=+t)?le:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):ue(isNaN(n)?e:n)}}function le(t,n){var e=n-t;return e?ce(t,e):ue(isNaN(t)?n:t)}Qt(re,ee,Kt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new re(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new re(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*kn,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new bn(255*(n+e*($n*r+Wn*i)),255*(n+e*(Zn*r+Qn*i)),255*(n+e*(Kn*r)),this.opacity)}}));var he=function t(n){var e=se(n);function r(t,n){var r=e((t=_n(t)).r,(n=_n(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=le(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function de(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;e<i;++e)r=_n(n[e]),o[e]=r.r||0,a[e]=r.g||0,u[e]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}var pe=de(oe),ve=de(ae);function ge(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function ye(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function _e(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(e=0;e<i;++e)o[e]=Te(t[e],n[e]);for(;e<r;++e)a[e]=n[e];return function(t){for(e=0;e<i;++e)a[e]=o[e](t);return a}}function be(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function me(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function xe(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Te(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var we=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Me=new RegExp(we.source,"g");function Ne(t,n){var e,r,i,o=we.lastIndex=Me.lastIndex=0,a=-1,u=[],c=[];for(t+="",n+="";(e=we.exec(t))&&(r=Me.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:me(e,r)})),o=Me.lastIndex;return o<n.length&&(i=n.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?c[0]?function(t){return function(n){return t(n)+""}}(c[0].x):function(t){return function(){return t}}(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)u[(e=c[r]).i]=e.x(t);return u.join("")})}function Te(t,n){var e,r=typeof n;return null==n||"boolean"===r?ue(n):("number"===r?me:"string"===r?(e=pn(n))?(n=e,he):Ne:n instanceof pn?he:n instanceof Date?be:ye(n)?ge:Array.isArray(n)?_e:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?xe:me)(t,n)}function Ae(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}var Se,ke,Ee,Ce,Pe=180/Math.PI,ze={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Re(t,n,e,r,i,o){var a,u,c;return(a=Math.sqrt(t*t+n*n))&&(t/=a,n/=a),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,c/=u),t*r<n*e&&(t=-t,n=-n,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Pe,skewX:Math.atan(c)*Pe,scaleX:a,scaleY:u}}function De(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],c=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var c=a.push("translate(",null,n,null,e);u.push({i:c-4,x:me(t,i)},{i:c-2,x:me(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}(o.translateX,o.translateY,a.translateX,a.translateY,u,c),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:me(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:me(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:me(t,e)},{i:u-2,x:me(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e<r;)u[(n=c[e]).i]=n.x(t);return u.join("")}}}var qe=De(function(t){return"none"===t?ze:(Se||(Se=document.createElement("DIV"),ke=document.documentElement,Ee=document.defaultView),Se.style.transform=t,t=Ee.getComputedStyle(ke.appendChild(Se),null).getPropertyValue("transform"),ke.removeChild(Se),Re(+(t=t.slice(7,-1).split(","))[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},"px, ","px)","deg)"),Le=De(function(t){return null==t?ze:(Ce||(Ce=document.createElementNS("http://www.w3.org/2000/svg","g")),Ce.setAttribute("transform",t),(t=Ce.transform.baseVal.consolidate())?Re((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):ze)},", ",")",")"),Ue=Math.SQRT2,Oe=2,Be=4,Fe=1e-12;function Ye(t){return((t=Math.exp(t))+1/t)/2}function Ie(t,n){var e,r,i=t[0],o=t[1],a=t[2],u=n[0],c=n[1],f=n[2],s=u-i,l=c-o,h=s*s+l*l;if(h<Fe)r=Math.log(f/a)/Ue,e=function(t){return[i+t*s,o+t*l,a*Math.exp(Ue*t*r)]};else{var d=Math.sqrt(h),p=(f*f-a*a+Be*h)/(2*a*Oe*d),v=(f*f-a*a-Be*h)/(2*f*Oe*d),g=Math.log(Math.sqrt(p*p+1)-p),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-g)/Ue,e=function(t){var n=t*r,e=Ye(g),u=a/(Oe*d)*(e*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(Ue*n+g)-function(t){return((t=Math.exp(t))-1/t)/2}(g));return[i+u*s,o+u*l,a*e/Ye(Ue*n+g)]}}return e.duration=1e3*r,e}function He(t){return function(n,e){var r=t((n=Tn(n)).h,(e=Tn(e)).h),i=le(n.s,e.s),o=le(n.l,e.l),a=le(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var je=He(fe),Xe=He(le);function Ve(t){return function(n,e){var r=t((n=Xn(n)).h,(e=Xn(e)).h),i=le(n.c,e.c),o=le(n.l,e.l),a=le(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var Ge=Ve(fe),$e=Ve(le);function We(t){return function n(e){function r(n,r){var i=t((n=ee(n)).h,(r=ee(r)).h),o=le(n.s,r.s),a=le(n.l,r.l),u=le(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=a(Math.pow(t,e)),n.opacity=u(t),n+""}}return e=+e,r.gamma=n,r}(1)}var Ze=We(fe),Qe=We(le);var Ke,Je,tr=0,nr=0,er=0,rr=1e3,ir=0,or=0,ar=0,ur="object"==typeof performance&&performance.now?performance:Date,cr="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function fr(){return or||(cr(sr),or=ur.now()+ar)}function sr(){or=0}function lr(){this._call=this._time=this._next=null}function hr(t,n,e){var r=new lr;return r.restart(t,n,e),r}function dr(){fr(),++tr;for(var t,n=Ke;n;)(t=or-n._time)>=0&&n._call.call(null,t),n=n._next;--tr}function pr(){or=(ir=ur.now())+ar,tr=nr=0;try{dr()}finally{tr=0,function(){var t,n,e=Ke,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Ke=n);Je=t,gr(r)}(),or=0}}function vr(){var t=ur.now(),n=t-ir;n>rr&&(ar-=n,ir=t)}function gr(t){tr||(nr&&(nr=clearTimeout(nr)),t-or>24?(t<1/0&&(nr=setTimeout(pr,t-ur.now()-ar)),er&&(er=clearInterval(er))):(er||(ir=ur.now(),er=setInterval(vr,rr)),tr=1,cr(pr)))}function yr(t,n,e){var r=new lr;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r}lr.prototype=hr.prototype={constructor:lr,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?fr():+e)+(null==n?0:+n),this._next||Je===this||(Je?Je._next=this:Ke=this,Je=this),this._call=t,this._time=e,gr()},stop:function(){this._call&&(this._call=null,this._time=1/0,gr())}};var _r=I("start","end","cancel","interrupt"),br=[],mr=0,xr=1,wr=2,Mr=3,Nr=4,Tr=5,Ar=6;function Sr(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(c){var f,s,l,h;if(e.state!==xr)return u();for(f in i)if((h=i[f]).name===e.name){if(h.state===Mr)return yr(o);h.state===Nr?(h.state=Ar,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+f<n&&(h.state=Ar,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[f])}if(yr(function(){e.state===Mr&&(e.state=Nr,e.timer.restart(a,e.delay,e.time),a(c))}),e.state=wr,e.on.call("start",t,t.__data__,e.index,e.group),e.state===wr){for(e.state=Mr,r=new Array(l=e.tween.length),f=0,s=-1;f<l;++f)(h=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(r[++s]=h);r.length=s+1}}function a(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(u),e.state=Tr,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);e.state===Tr&&(e.on.call("end",t,t.__data__,e.index,e.group),u())}function u(){for(var r in e.state=Ar,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=hr(function(t){e.state=xr,e.timer.restart(o,e.delay,e.time),e.delay<=t&&o(t-e.delay)},0,e.time)}(t,e,{name:n,index:r,group:i,on:_r,tween:br,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:mr})}function kr(t,n){var e=Cr(t,n);if(e.state>mr)throw new Error("too late; already scheduled");return e}function Er(t,n){var e=Cr(t,n);if(e.state>Mr)throw new Error("too late; already running");return e}function Cr(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Pr(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>wr&&e.state<Tr,e.state=Ar,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function zr(t,n,e){var r=t._id;return t.each(function(){var t=Er(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return Cr(t,r).value[n]}}function Rr(t,n){var e;return("number"==typeof n?me:n instanceof pn?he:(e=pn(n))?(n=e,he):Ne)(t,n)}var Dr=zt.prototype.constructor;function qr(t){return function(){this.style.removeProperty(t)}}var Lr=0;function Ur(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Or(t){return zt().transition(t)}function Br(){return++Lr}var Fr=zt.prototype;function Yr(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function Ir(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}Ur.prototype=Or.prototype={constructor:Ur,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=K(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var u,c,f=r[a],s=f.length,l=o[a]=new Array(s),h=0;h<s;++h)(u=f[h])&&(c=t.call(u,u.__data__,h,f))&&("__data__"in u&&(c.__data__=u.__data__),l[h]=c,Sr(l[h],n,e,h,l,Cr(u,e)));return new Ur(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=tt(t));for(var r=this._groups,i=r.length,o=[],a=[],u=0;u<i;++u)for(var c,f=r[u],s=f.length,l=0;l<s;++l)if(c=f[l]){for(var h,d=t.call(c,c.__data__,l,f),p=Cr(c,e),v=0,g=d.length;v<g;++v)(h=d[v])&&Sr(h,n,e,v,d,p);o.push(d),a.push(c)}return new Ur(o,a,n,e)},filter:function(t){"function"!=typeof t&&(t=nt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Ur(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new Ur(a,this._parents,this._name,this._id)},selection:function(){return new Dr(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=Br(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)if(a=u[f]){var s=Cr(a,n);Sr(a,t,e,f,u,{time:s.time+s.delay+s.duration,delay:0,duration:s.duration,ease:s.ease})}return new Ur(r,this._parents,t,e)},call:Fr.call,nodes:Fr.nodes,node:Fr.node,size:Fr.size,empty:Fr.empty,each:Fr.each,on:function(t,n){var e=this._id;return arguments.length<2?Cr(this.node(),e).on.on(t):this.each(function(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t})}(n)?kr:Er;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=W(t),r="transform"===e?Le:Rr;return this.attrTween(t,"function"==typeof n?(e.local?function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}:function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}})(e,r,zr(this,"attr."+t,n)):null==n?(e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(e):(e.local?function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}:function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}})(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=W(t);return this.tween(e,(r.local?function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}(t,i)),e}return i._value=n,i}:function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}(t,i)),e}return i._value=n,i})(r,n))},style:function(t,n,e){var r="transform"==(t+="")?qe:Rr;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=ft(this,t),a=(this.style.removeProperty(t),ft(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,qr(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=ft(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=ft(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,zr(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=Er(this,t),f=c.on,s=null==c.value[a]?o||(o=qr(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=ft(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(zr(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Cr(this.node(),e).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?function(t,n){var e,r;return function(){var i=Er(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a<u;++a)if(r[a].name===n){(r=r.slice()).splice(a,1);break}i.tween=r}}:function(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Er(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:n,value:e},c=0,f=i.length;c<f;++c)if(i[c].name===n){i[c]=u;break}c===f&&i.push(u)}o.tween=i}})(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?function(t,n){return function(){kr(this,t).delay=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){kr(this,t).delay=n}})(n,t)):Cr(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?function(t,n){return function(){Er(this,t).duration=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){Er(this,t).duration=n}})(n,t)):Cr(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if("function"!=typeof n)throw new Error;return function(){Er(this,t).ease=n}}(n,t)):Cr(this.node(),n).ease},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(o,a){var u={value:a},c={value:function(){0==--i&&o()}};e.each(function(){var e=Er(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(c)),e.on=n})})}};var Hr=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),jr=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),Xr=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),Vr=Math.PI,Gr=Vr/2;function $r(t){return(1-Math.cos(Vr*t))/2}function Wr(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function Zr(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var Qr=4/11,Kr=6/11,Jr=8/11,ti=.75,ni=9/11,ei=10/11,ri=.9375,ii=21/22,oi=63/64,ai=1/Qr/Qr;function ui(t){return(t=+t)<Qr?ai*t*t:t<Jr?ai*(t-=Kr)*t+ti:t<ei?ai*(t-=ni)*t+ri:ai*(t-=ii)*t+oi}var ci=function t(n){function e(t){return t*t*((n+1)*t-n)}return n=+n,e.overshoot=t,e}(1.70158),fi=function t(n){function e(t){return--t*t*((n+1)*t+n)+1}return n=+n,e.overshoot=t,e}(1.70158),si=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(1.70158),li=2*Math.PI,hi=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=li);function i(t){return n*Math.pow(2,10*--t)*Math.sin((r-t)/e)}return i.amplitude=function(n){return t(n,e*li)},i.period=function(e){return t(n,e)},i}(1,.3),di=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=li);function i(t){return 1-n*Math.pow(2,-10*(t=+t))*Math.sin((t+r)/e)}return i.amplitude=function(n){return t(n,e*li)},i.period=function(e){return t(n,e)},i}(1,.3),pi=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=li);function i(t){return((t=2*t-1)<0?n*Math.pow(2,10*t)*Math.sin((r-t)/e):2-n*Math.pow(2,-10*t)*Math.sin((r+t)/e))/2}return i.amplitude=function(n){return t(n,e*li)},i.period=function(e){return t(n,e)},i}(1,.3),vi={time:null,delay:0,duration:250,ease:Ir};function gi(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return vi.time=fr(),vi;return e}zt.prototype.interrupt=function(t){return this.each(function(){Pr(this,t)})},zt.prototype.transition=function(t){var n,e;t instanceof Ur?(n=t._id,t=t._name):(n=Br(),(e=vi).time=fr(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)(a=u[f])&&Sr(a,t,n,f,u,e||gi(a,n));return new Ur(r,this._parents,t,n)};var yi=[null];function _i(t){return function(){return t}}function bi(t,n,e){this.target=t,this.type=n,this.selection=e}function mi(){t.event.stopImmediatePropagation()}function xi(){t.event.preventDefault(),t.event.stopImmediatePropagation()}var wi={name:"drag"},Mi={name:"space"},Ni={name:"handle"},Ti={name:"center"};function Ai(t){return[+t[0],+t[1]]}function Si(t){return[Ai(t[0]),Ai(t[1])]}var ki={name:"x",handles:["w","e"].map(Li),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},Ei={name:"y",handles:["n","s"].map(Li),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},Ci={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Li),input:function(t){return null==t?null:Si(t)},output:function(t){return t}},Pi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},zi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Ri={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Di={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},qi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Li(t){return{type:t}}function Ui(){return!t.event.ctrlKey&&!t.event.button}function Oi(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Bi(){return navigator.maxTouchPoints||"ontouchstart"in this}function Fi(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Yi(n){var e,r=Oi,i=Ui,o=Bi,a=!0,u=I("start","brush","end"),c=6;function f(t){var e=t.property("__brush",g).selectAll(".overlay").data([Li("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Pi.overlay).merge(e).each(function(){var t=Fi(this).extent;Rt(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),t.selectAll(".selection").data([Li("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Pi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=t.selectAll(".handle").data(n.handles,function(t){return t.type});r.exit().remove(),r.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return Pi[t.type]}),t.each(s).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",d).filter(o).on("touchstart.brush",d).on("touchmove.brush",p).on("touchend.brush touchcancel.brush",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function s(){var t=Rt(this),n=Fi(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?n[1][0]-c/2:n[0][0]-c/2}).attr("y",function(t){return"s"===t.type[0]?n[1][1]-c/2:n[0][1]-c/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+c:c}).attr("height",function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+c:c})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,n,e){return!e&&t.__brush.emitter||new h(t,n)}function h(t,n){this.that=t,this.args=n,this.state=t.__brush,this.active=0}function d(){if((!e||t.event.touches)&&i.apply(this,arguments)){var r,o,u,c,f,h,d,p,v,g,y,_,b=this,m=t.event.target.__data__.type,x="selection"===(a&&t.event.metaKey?m="overlay":m)?wi:a&&t.event.altKey?Ti:Ni,w=n===Ei?null:Di[m],M=n===ki?null:qi[m],N=Fi(b),T=N.extent,A=N.selection,S=T[0][0],k=T[0][1],E=T[1][0],C=T[1][1],P=0,z=0,R=w&&M&&a&&t.event.shiftKey,D=t.event.touches?(_=t.event.changedTouches[0].identifier,function(n){return Ft(n,t.event.touches,_)}):Bt,q=D(b),L=q,U=l(b,arguments,!0).beforestart();"overlay"===m?(A&&(v=!0),N.selection=A=[[r=n===Ei?S:q[0],u=n===ki?k:q[1]],[f=n===Ei?E:r,d=n===ki?C:u]]):(r=A[0][0],u=A[0][1],f=A[1][0],d=A[1][1]),o=r,c=u,h=f,p=d;var O=Rt(b).attr("pointer-events","none"),B=O.selectAll(".overlay").attr("cursor",Pi[m]);if(t.event.touches)U.moved=Y,U.ended=H;else{var F=Rt(t.event.view).on("mousemove.brush",Y,!0).on("mouseup.brush",H,!0);a&&F.on("keydown.brush",function(){switch(t.event.keyCode){case 16:R=w&&M;break;case 18:x===Ni&&(w&&(f=h-P*w,r=o+P*w),M&&(d=p-z*M,u=c+z*M),x=Ti,I());break;case 32:x!==Ni&&x!==Ti||(w<0?f=h-P:w>0&&(r=o-P),M<0?d=p-z:M>0&&(u=c-z),x=Mi,B.attr("cursor",Pi.selection),I());break;default:return}xi()},!0).on("keyup.brush",function(){switch(t.event.keyCode){case 16:R&&(g=y=R=!1,I());break;case 18:x===Ti&&(w<0?f=h:w>0&&(r=o),M<0?d=p:M>0&&(u=c),x=Ni,I());break;case 32:x===Mi&&(t.event.altKey?(w&&(f=h-P*w,r=o+P*w),M&&(d=p-z*M,u=c+z*M),x=Ti):(w<0?f=h:w>0&&(r=o),M<0?d=p:M>0&&(u=c),x=Ni),B.attr("cursor",Pi[m]),I());break;default:return}xi()},!0),Ht(t.event.view)}mi(),Pr(b),s.call(b),U.start()}function Y(){var t=D(b);!R||g||y||(Math.abs(t[0]-L[0])>Math.abs(t[1]-L[1])?y=!0:g=!0),L=t,v=!0,xi(),I()}function I(){var t;switch(P=L[0]-q[0],z=L[1]-q[1],x){case Mi:case wi:w&&(P=Math.max(S-r,Math.min(E-f,P)),o=r+P,h=f+P),M&&(z=Math.max(k-u,Math.min(C-d,z)),c=u+z,p=d+z);break;case Ni:w<0?(P=Math.max(S-r,Math.min(E-r,P)),o=r+P,h=f):w>0&&(P=Math.max(S-f,Math.min(E-f,P)),o=r,h=f+P),M<0?(z=Math.max(k-u,Math.min(C-u,z)),c=u+z,p=d):M>0&&(z=Math.max(k-d,Math.min(C-d,z)),c=u,p=d+z);break;case Ti:w&&(o=Math.max(S,Math.min(E,r-P*w)),h=Math.max(S,Math.min(E,f+P*w))),M&&(c=Math.max(k,Math.min(C,u-z*M)),p=Math.max(k,Math.min(C,d+z*M)))}h<o&&(w*=-1,t=r,r=f,f=t,t=o,o=h,h=t,m in zi&&B.attr("cursor",Pi[m=zi[m]])),p<c&&(M*=-1,t=u,u=d,d=t,t=c,c=p,p=t,m in Ri&&B.attr("cursor",Pi[m=Ri[m]])),N.selection&&(A=N.selection),g&&(o=A[0][0],h=A[1][0]),y&&(c=A[0][1],p=A[1][1]),A[0][0]===o&&A[0][1]===c&&A[1][0]===h&&A[1][1]===p||(N.selection=[[o,c],[h,p]],s.call(b),U.brush())}function H(){if(mi(),t.event.touches){if(t.event.touches.length)return;e&&clearTimeout(e),e=setTimeout(function(){e=null},500)}else jt(t.event.view,v),F.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);O.attr("pointer-events","all"),B.attr("cursor",Pi.overlay),N.selection&&(A=N.selection),function(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}(A)&&(N.selection=null,s.call(b)),U.end()}}function p(){l(this,arguments).moved()}function v(){l(this,arguments).ended()}function g(){var t=this.__brush||{selection:null};return t.extent=Si(r.apply(this,arguments)),t.dim=n,t}return f.move=function(t,e){t.selection?t.on("start.brush",function(){l(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){l(this,arguments).end()}).tween("brush",function(){var t=this,r=t.__brush,i=l(t,arguments),o=r.selection,a=n.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=Te(o,a);function c(n){r.selection=1===n&&null===a?null:u(n),s.call(t),i.brush()}return null!==o&&null!==a?c:c(1)}):t.each(function(){var t=this,r=arguments,i=t.__brush,o=n.input("function"==typeof e?e.apply(t,r):e,i.extent),a=l(t,r).beforestart();Pr(t),i.selection=null===o?null:o,s.call(t),a.start().brush().end()})},f.clear=function(t){f.move(t,null)},h.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){kt(new bi(f,t,n.output(this.state.selection)),u.apply,u,[t,this.that,this.args])}},f.extent=function(t){return arguments.length?(r="function"==typeof t?t:_i(Si(t)),f):r},f.filter=function(t){return arguments.length?(i="function"==typeof t?t:_i(!!t),f):i},f.touchable=function(t){return arguments.length?(o="function"==typeof t?t:_i(!!t),f):o},f.handleSize=function(t){return arguments.length?(c=+t,f):c},f.keyModifiers=function(t){return arguments.length?(a=!!t,f):a},f.on=function(){var t=u.on.apply(u,arguments);return t===u?f:t},f}var Ii=Math.cos,Hi=Math.sin,ji=Math.PI,Xi=ji/2,Vi=2*ji,Gi=Math.max;function $i(t){return function(n,e){return t(n.source.value+n.target.value,e.source.value+e.target.value)}}var Wi=Array.prototype.slice;function Zi(t){return function(){return t}}var Qi=Math.PI,Ki=2*Qi,Ji=Ki-1e-6;function to(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function no(){return new to}function eo(t){return t.source}function ro(t){return t.target}function io(t){return t.radius}function oo(t){return t.startAngle}function ao(t){return t.endAngle}to.prototype=no.prototype={constructor:to,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,o){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(l>1e-6)if(Math.abs(s*u-c*f)>1e-6&&i){var h=e-o,d=r-a,p=u*u+c*c,v=h*h+d*d,g=Math.sqrt(p),y=Math.sqrt(l),_=i*Math.tan((Qi-Math.acos((p+l-v)/(2*g*y)))/2),b=_/y,m=_/g;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*f)+","+(n+b*s)),this._+="A"+i+","+i+",0,0,"+ +(s*h>f*d)+","+(this._x1=t+m*u)+","+(this._y1=n+m*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,o=!!o;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+f:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-f)>1e-6)&&(this._+="L"+c+","+f),e&&(l<0&&(l=l%Ki+Ki),l>Ji?this._+="A"+e+","+e+",0,1,"+s+","+(t-a)+","+(n-u)+"A"+e+","+e+",0,1,"+s+","+(this._x1=c)+","+(this._y1=f):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=Qi)+","+s+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};function uo(){}function co(t,n){var e=new uo;if(t instanceof uo)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i<o;)e.set(i,t[i]);else for(;++i<o;)e.set(n(r=t[i],i,t),r)}else if(t)for(var a in t)e.set(a,t[a]);return e}function fo(){return{}}function so(t,n,e){t[n]=e}function lo(){return co()}function ho(t,n,e){t.set(n,e)}function po(){}uo.prototype=co.prototype={constructor:uo,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,n){return this["$"+t]=n,this},remove:function(t){var n="$"+t;return n in this&&delete this[n]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(n.slice(1));return t},values:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(this[n]);return t},entries:function(){var t=[];for(var n in this)"$"===n[0]&&t.push({key:n.slice(1),value:this[n]});return t},size:function(){var t=0;for(var n in this)"$"===n[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var n in this)"$"===n[0]&&t(this[n],n.slice(1),this)}};var vo=co.prototype;function go(t,n){var e=new po;if(t instanceof po)t.each(function(t){e.add(t)});else if(t){var r=-1,i=t.length;if(null==n)for(;++r<i;)e.add(t[r]);else for(;++r<i;)e.add(n(t[r],r,t))}return e}po.prototype=go.prototype={constructor:po,has:vo.has,add:function(t){return this["$"+(t+="")]=t,this},remove:vo.remove,clear:vo.clear,values:vo.keys,size:vo.size,empty:vo.empty,each:vo.each};var yo=Array.prototype.slice;function _o(t,n){return t-n}function bo(t){return function(){return t}}function mo(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=xo(t,n[r]))return e;return 0}function xo(t,n){for(var e=n[0],r=n[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var c=t[o],f=c[0],s=c[1],l=t[u],h=l[0],d=l[1];if(wo(c,l,n))return 0;s>r!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function wo(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function Mo(){}var No=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function To(){var t=1,n=1,e=M,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(_o);else{var r=s(t),i=r[0],a=r[1];n=w(i,a,n),n=g(Math.floor(i/n)*n,Math.floor(a/n)*n,n)}return n.map(function(n){return o(t,n)})}function o(e,i){var o=[],u=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=e[0]>=r,No[f<<1].forEach(p);for(;++o<t-1;)c=f,f=e[o+1]>=r,No[c|f<<1].forEach(p);No[f<<0].forEach(p);for(;++u<n-1;){for(o=-1,f=e[u*t+t]>=r,s=e[u*t]>=r,No[f<<1|s<<2].forEach(p);++o<t-1;)c=f,f=e[u*t+t+o+1]>=r,l=s,s=e[u*t+o+1]>=r,No[c|f<<1|s<<2|l<<3].forEach(p);No[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,No[s<<2].forEach(p);for(;++o<t-1;)l=s,s=e[u*t+o+1]>=r,No[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}No[s<<3].forEach(p)}(e,i,function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?o.push([t]):u.push(t)}),u.forEach(function(t){for(var n,e=0,r=o.length;e<r;++e)if(-1!==mo((n=o[e])[0],t))return void n.push(t)}),{type:"MultiPolygon",value:i,coordinates:o}}function a(n){return 2*n[0]+n[1]*(t+1)*4}function u(e,r,i){e.forEach(function(e){var o,a=e[0],u=e[1],c=0|a,f=0|u,s=r[f*t+c];a>0&&a<t&&c===a&&(o=r[f*t+c-1],e[0]=a+(i-o)/(s-o)-.5),u>0&&u<n&&f===u&&(o=r[(f-1)*t+c],e[1]=u+(i-o)/(s-o)-.5)})}return i.contour=o,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.ceil(e[0]),o=Math.ceil(e[1]);if(!(r>0&&o>0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?bo(yo.call(t)):bo(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:Mo,i):r===u},i}function Ao(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a<i;++a)for(var u=0,c=0;u<r+e;++u)u<r&&(c+=t.data[u+a*r]),u>=e&&(u>=o&&(c-=t.data[u-o+a*r]),n.data[u-e+a*r]=c/Math.min(u+1,r-1+o-u,o))}function So(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a<r;++a)for(var u=0,c=0;u<i+e;++u)u<i&&(c+=t.data[a+u*r]),u>=e&&(u>=o&&(c-=t.data[a+(u-o)*r]),n.data[a+(u-e)*r]=c/Math.min(u+1,i-1+o-u,o))}function ko(t){return t[0]}function Eo(t){return t[1]}function Co(){return 1}var Po={},zo={},Ro=34,Do=10,qo=13;function Lo(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'}).join(",")+"}")}function Uo(t){var n=Object.create(null),e=[];return t.forEach(function(t){for(var r in t)r in n||e.push(n[r]=r)}),e}function Oo(t,n){var e=t+"",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function Bo(t){var n=t.getUTCHours(),e=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":function(t){return t<0?"-"+Oo(-t,6):t>9999?"+"+Oo(t,6):Oo(t,4)}(t.getUTCFullYear())+"-"+Oo(t.getUTCMonth()+1,2)+"-"+Oo(t.getUTCDate(),2)+(i?"T"+Oo(n,2)+":"+Oo(e,2)+":"+Oo(r,2)+"."+Oo(i,3)+"Z":r?"T"+Oo(n,2)+":"+Oo(e,2)+":"+Oo(r,2)+"Z":e||n?"T"+Oo(n,2)+":"+Oo(e,2)+"Z":"")}function Fo(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return zo;if(f)return f=!1,Po;var n,r,i=a;if(t.charCodeAt(i)===Ro){for(;a++<o&&t.charCodeAt(a)!==Ro||t.charCodeAt(++a)===Ro;);return(n=a)>=o?c=!0:(r=t.charCodeAt(a++))===Do?f=!0:r===qo&&(f=!0,t.charCodeAt(a)===Do&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a<o;){if((r=t.charCodeAt(n=a++))===Do)f=!0;else if(r===qo)f=!0,t.charCodeAt(a)===Do&&++a;else if(r!==e)continue;return t.slice(i,n)}return c=!0,t.slice(i,o)}for(t.charCodeAt(o-1)===Do&&--o,t.charCodeAt(o-1)===qo&&--o;(r=s())!==zo;){for(var l=[];r!==Po&&r!==zo;)l.push(r),r=s();n&&null==(l=n(l,u++))||i.push(l)}return i}function i(n,e){return n.map(function(n){return e.map(function(t){return a(n[t])}).join(t)})}function o(n){return n.map(a).join(t)}function a(t){return null==t?"":t instanceof Date?Bo(t):n.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,n){var e,i,o=r(t,function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=Lo(t);return function(r,i){return n(e(r),i,t)}}(t,n):Lo(t)});return o.columns=i||[],o},parseRows:r,format:function(n,e){return null==e&&(e=Uo(n)),[e.map(a).join(t)].concat(i(n,e)).join("\n")},formatBody:function(t,n){return null==n&&(n=Uo(t)),i(t,n).join("\n")},formatRows:function(t){return t.map(o).join("\n")},formatRow:o,formatValue:a}}var Yo=Fo(","),Io=Yo.parse,Ho=Yo.parseRows,jo=Yo.format,Xo=Yo.formatBody,Vo=Yo.formatRows,Go=Yo.formatRow,$o=Yo.formatValue,Wo=Fo("\t"),Zo=Wo.parse,Qo=Wo.parseRows,Ko=Wo.format,Jo=Wo.formatBody,ta=Wo.formatRows,na=Wo.formatRow,ea=Wo.formatValue;var ra=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function ia(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function oa(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function aa(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function ua(t,n){return fetch(t,n).then(aa)}function ca(t){return function(n,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=void 0),ua(n,e).then(function(n){return t(n,r)})}}var fa=ca(Io),sa=ca(Zo);function la(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.json()}function ha(t){return function(n,e){return ua(n,e).then(function(n){return(new DOMParser).parseFromString(n,t)})}}var da=ha("application/xml"),pa=ha("text/html"),va=ha("image/svg+xml");function ga(t){return function(){return t}}function ya(){return 1e-6*(Math.random()-.5)}function _a(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},v=t._x0,g=t._y0,y=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function ba(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function ma(t){return t[0]}function xa(t){return t[1]}function wa(t,n,e){var r=new Ma(null==n?ma:n,null==e?xa:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Ma(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Na(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Ta=wa.prototype=Ma.prototype;function Aa(t){return t.x+t.vx}function Sa(t){return t.y+t.vy}function ka(t){return t.index}function Ea(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function Ca(t){return t.x}function Pa(t){return t.y}Ta.copy=function(){var t,n,e=new Ma(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Na(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Na(n));return e},Ta.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return _a(this.cover(n,e),n,e,t)},Ta.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;e<o;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(a[e]=r,u[e]=i,r<c&&(c=r),r>s&&(s=r),i<f&&(f=i),i>l&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;e<o;++e)_a(this,a[e],u[e],t[e]);return this},Ta.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{for(var a,u,c=i-e,f=this._root;e>t||t>=i||r>n||n>=o;)switch(u=(n<r)<<1|t<e,(a=new Array(4))[u]=f,f=a,c*=2,u){case 0:i=e+c,o=r+c;break;case 1:e=i-c,o=r+c;break;case 2:i=e+c,r=o-c;break;case 3:e=i-c,r=o-c}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},Ta.data=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},Ta.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},Ta.find=function(t,n,e){var r,i,o,a,u,c,f,s=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],v=this._root;for(v&&p.push(new ba(v,s,l,h,d)),null==e?e=1/0:(s=t-e,l=n-e,h=t+e,d=n+e,e*=e);c=p.pop();)if(!(!(v=c.node)||(i=c.x0)>h||(o=c.y0)>d||(a=c.x1)<s||(u=c.y1)<l))if(v.length){var g=(i+a)/2,y=(o+u)/2;p.push(new ba(v[3],g,y,a,u),new ba(v[2],i,y,g,u),new ba(v[1],g,o,a,y),new ba(v[0],i,o,g,y)),(f=(n>=y)<<1|t>=g)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,v.data),b=n-+this._y.call(null,v.data),m=_*_+b*b;if(m<e){var x=Math.sqrt(e=m);s=t-x,l=n-x,h=t+x,d=n+x,r=v.data}}return r},Ta.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var n,e,r,i,o,a,u,c,f,s,l,h,d=this._root,p=this._x0,v=this._y0,g=this._x1,y=this._y1;if(!d)return this;if(d.length)for(;;){if((f=o>=(u=(p+g)/2))?p=u:g=u,(s=a>=(c=(v+y)/2))?v=c:y=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Ta.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},Ta.root=function(){return this._root},Ta.size=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t},Ta.visit=function(t){var n,e,r,i,o,a,u=[],c=this._root;for(c&&u.push(new ba(c,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&c.length){var f=(r+o)/2,s=(i+a)/2;(e=c[3])&&u.push(new ba(e,f,s,o,a)),(e=c[2])&&u.push(new ba(e,r,s,f,a)),(e=c[1])&&u.push(new ba(e,f,i,o,s)),(e=c[0])&&u.push(new ba(e,r,i,f,s))}return this},Ta.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new ba(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,c=n.x1,f=n.y1,s=(a+c)/2,l=(u+f)/2;(o=i[0])&&e.push(new ba(o,a,u,s,l)),(o=i[1])&&e.push(new ba(o,s,u,c,l)),(o=i[2])&&e.push(new ba(o,a,l,s,f)),(o=i[3])&&e.push(new ba(o,s,l,c,f))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},Ta.x=function(t){return arguments.length?(this._x=t,this):this._x},Ta.y=function(t){return arguments.length?(this._y=t,this):this._y};var za=10,Ra=Math.PI*(3-Math.sqrt(5));function Da(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function qa(t){return(t=Da(Math.abs(t)))?t[1]:NaN}var La,Ua=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Oa(t){if(!(n=Ua.exec(t)))throw new Error("invalid format: "+t);var n;return new Ba({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function Ba(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Fa(t,n){var e=Da(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Oa.prototype=Ba.prototype,Ba.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ya={"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Fa(100*t,n)},r:Fa,s:function(t,n){var e=Da(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(La=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Da(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function Ia(t){return t}var Ha,ja=Array.prototype.map,Xa=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Va(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?Ia:(n=ja.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?Ia:function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(ja.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"-":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=Oa(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,v=t.comma,g=t.precision,y=t.trim,_=t.type;"n"===_?(v=!0,_="g"):Ya[_]||(void 0===g&&(g=12),y=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=Ya[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var N=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),g),y&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),N&&0==+t&&"+"!==l&&(N=!1),h=(N?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?Xa[8+La/3]:"")+M+(N&&"("===l?")":""),w)for(i=-1,o=t.length;++i<o;)if(48>(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}v&&!d&&(t=r(t,1/0));var T=h.length+t.length+M.length,A=T<p?new Array(p-T+1).join(n):"";switch(v&&d&&(t=r(A+t,A.length?p-M.length:1/0),A=""),e){case"<":t=h+t+M+A;break;case"=":t=h+A+t+M;break;case"^":t=A.slice(0,T=A.length>>1)+h+t+M+A.slice(T);break;default:t=A+h+t+M}return u(t)}return g=void 0===g?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=Oa(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(qa(n)/3))),i=Math.pow(10,-r),o=Xa[8+r/3];return function(t){return e(i*t)+o}}}}function Ga(n){return Ha=Va(n),t.format=Ha.format,t.formatPrefix=Ha.formatPrefix,Ha}function $a(t){return Math.max(0,-qa(Math.abs(t)))}function Wa(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(qa(n)/3)))-qa(Math.abs(t)))}function Za(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,qa(n)-qa(t))+1}function Qa(){return new Ka}function Ka(){this.reset()}Ga({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Ka.prototype={constructor:Ka,reset:function(){this.s=this.t=0},add:function(t){tu(Ja,t,this.t),tu(this,Ja.s,this.s),this.s?this.t+=Ja.t:this.s=Ja.t},valueOf:function(){return this.s}};var Ja=new Ka;function tu(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}var nu=1e-6,eu=1e-12,ru=Math.PI,iu=ru/2,ou=ru/4,au=2*ru,uu=180/ru,cu=ru/180,fu=Math.abs,su=Math.atan,lu=Math.atan2,hu=Math.cos,du=Math.ceil,pu=Math.exp,vu=Math.log,gu=Math.pow,yu=Math.sin,_u=Math.sign||function(t){return t>0?1:t<0?-1:0},bu=Math.sqrt,mu=Math.tan;function xu(t){return t>1?0:t<-1?ru:Math.acos(t)}function wu(t){return t>1?iu:t<-1?-iu:Math.asin(t)}function Mu(t){return(t=yu(t/2))*t}function Nu(){}function Tu(t,n){t&&Su.hasOwnProperty(t.type)&&Su[t.type](t,n)}var Au={Feature:function(t,n){Tu(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Tu(e[r].geometry,n)}},Su={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){ku(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)ku(e[r],n,0)},Polygon:function(t,n){Eu(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Eu(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Tu(e[r],n)}};function ku(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function Eu(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)ku(t[e],n,1);n.polygonEnd()}function Cu(t,n){t&&Au.hasOwnProperty(t.type)?Au[t.type](t,n):Tu(t,n)}var Pu,zu,Ru,Du,qu,Lu=Qa(),Uu=Qa(),Ou={point:Nu,lineStart:Nu,lineEnd:Nu,polygonStart:function(){Lu.reset(),Ou.lineStart=Bu,Ou.lineEnd=Fu},polygonEnd:function(){var t=+Lu;Uu.add(t<0?au+t:t),this.lineStart=this.lineEnd=this.point=Nu},sphere:function(){Uu.add(au)}};function Bu(){Ou.point=Yu}function Fu(){Iu(Pu,zu)}function Yu(t,n){Ou.point=Iu,Pu=t,zu=n,Ru=t*=cu,Du=hu(n=(n*=cu)/2+ou),qu=yu(n)}function Iu(t,n){var e=(t*=cu)-Ru,r=e>=0?1:-1,i=r*e,o=hu(n=(n*=cu)/2+ou),a=yu(n),u=qu*a,c=Du*o+u*hu(i),f=u*r*yu(i);Lu.add(lu(f,c)),Ru=t,Du=o,qu=a}function Hu(t){return[lu(t[1],t[0]),wu(t[2])]}function ju(t){var n=t[0],e=t[1],r=hu(e);return[r*hu(n),r*yu(n),yu(e)]}function Xu(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Vu(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Gu(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function $u(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function Wu(t){var n=bu(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var Zu,Qu,Ku,Ju,tc,nc,ec,rc,ic,oc,ac,uc,cc,fc,sc,lc,hc,dc,pc,vc,gc,yc,_c,bc,mc,xc,wc=Qa(),Mc={point:Nc,lineStart:Ac,lineEnd:Sc,polygonStart:function(){Mc.point=kc,Mc.lineStart=Ec,Mc.lineEnd=Cc,wc.reset(),Ou.polygonStart()},polygonEnd:function(){Ou.polygonEnd(),Mc.point=Nc,Mc.lineStart=Ac,Mc.lineEnd=Sc,Lu<0?(Zu=-(Ku=180),Qu=-(Ju=90)):wc>nu?Ju=90:wc<-nu&&(Qu=-90),oc[0]=Zu,oc[1]=Ku},sphere:function(){Zu=-(Ku=180),Qu=-(Ju=90)}};function Nc(t,n){ic.push(oc=[Zu=t,Ku=t]),n<Qu&&(Qu=n),n>Ju&&(Ju=n)}function Tc(t,n){var e=ju([t*cu,n*cu]);if(rc){var r=Vu(rc,e),i=Vu([r[1],-r[0],0],r);Wu(i),i=Hu(i);var o,a=t-tc,u=a>0?1:-1,c=i[0]*uu*u,f=fu(a)>180;f^(u*tc<c&&c<u*t)?(o=i[1]*uu)>Ju&&(Ju=o):f^(u*tc<(c=(c+360)%360-180)&&c<u*t)?(o=-i[1]*uu)<Qu&&(Qu=o):(n<Qu&&(Qu=n),n>Ju&&(Ju=n)),f?t<tc?Pc(Zu,t)>Pc(Zu,Ku)&&(Ku=t):Pc(t,Ku)>Pc(Zu,Ku)&&(Zu=t):Ku>=Zu?(t<Zu&&(Zu=t),t>Ku&&(Ku=t)):t>tc?Pc(Zu,t)>Pc(Zu,Ku)&&(Ku=t):Pc(t,Ku)>Pc(Zu,Ku)&&(Zu=t)}else ic.push(oc=[Zu=t,Ku=t]);n<Qu&&(Qu=n),n>Ju&&(Ju=n),rc=e,tc=t}function Ac(){Mc.point=Tc}function Sc(){oc[0]=Zu,oc[1]=Ku,Mc.point=Nc,rc=null}function kc(t,n){if(rc){var e=t-tc;wc.add(fu(e)>180?e+(e>0?360:-360):e)}else nc=t,ec=n;Ou.point(t,n),Tc(t,n)}function Ec(){Ou.lineStart()}function Cc(){kc(nc,ec),Ou.lineEnd(),fu(wc)>nu&&(Zu=-(Ku=180)),oc[0]=Zu,oc[1]=Ku,rc=null}function Pc(t,n){return(n-=t)<0?n+360:n}function zc(t,n){return t[0]-n[0]}function Rc(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var Dc={sphere:Nu,point:qc,lineStart:Uc,lineEnd:Fc,polygonStart:function(){Dc.lineStart=Yc,Dc.lineEnd=Ic},polygonEnd:function(){Dc.lineStart=Uc,Dc.lineEnd=Fc}};function qc(t,n){t*=cu;var e=hu(n*=cu);Lc(e*hu(t),e*yu(t),yu(n))}function Lc(t,n,e){cc+=(t-cc)/++ac,fc+=(n-fc)/ac,sc+=(e-sc)/ac}function Uc(){Dc.point=Oc}function Oc(t,n){t*=cu;var e=hu(n*=cu);bc=e*hu(t),mc=e*yu(t),xc=yu(n),Dc.point=Bc,Lc(bc,mc,xc)}function Bc(t,n){t*=cu;var e=hu(n*=cu),r=e*hu(t),i=e*yu(t),o=yu(n),a=lu(bu((a=mc*o-xc*i)*a+(a=xc*r-bc*o)*a+(a=bc*i-mc*r)*a),bc*r+mc*i+xc*o);uc+=a,lc+=a*(bc+(bc=r)),hc+=a*(mc+(mc=i)),dc+=a*(xc+(xc=o)),Lc(bc,mc,xc)}function Fc(){Dc.point=qc}function Yc(){Dc.point=Hc}function Ic(){jc(yc,_c),Dc.point=qc}function Hc(t,n){yc=t,_c=n,t*=cu,n*=cu,Dc.point=jc;var e=hu(n);bc=e*hu(t),mc=e*yu(t),xc=yu(n),Lc(bc,mc,xc)}function jc(t,n){t*=cu;var e=hu(n*=cu),r=e*hu(t),i=e*yu(t),o=yu(n),a=mc*o-xc*i,u=xc*r-bc*o,c=bc*i-mc*r,f=bu(a*a+u*u+c*c),s=wu(f),l=f&&-s/f;pc+=l*a,vc+=l*u,gc+=l*c,uc+=s,lc+=s*(bc+(bc=r)),hc+=s*(mc+(mc=i)),dc+=s*(xc+(xc=o)),Lc(bc,mc,xc)}function Xc(t){return function(){return t}}function Vc(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function Gc(t,n){return[fu(t)>ru?t+Math.round(-t/au)*au:t,n]}function $c(t,n,e){return(t%=au)?n||e?Vc(Zc(t),Qc(n,e)):Zc(t):n||e?Qc(n,e):Gc}function Wc(t){return function(n,e){return[(n+=t)>ru?n-au:n<-ru?n+au:n,e]}}function Zc(t){var n=Wc(t);return n.invert=Wc(-t),n}function Qc(t,n){var e=hu(t),r=yu(t),i=hu(n),o=yu(n);function a(t,n){var a=hu(n),u=hu(t)*a,c=yu(t)*a,f=yu(n),s=f*e+u*r;return[lu(c*i-s*o,u*e-f*r),wu(s*i+c*o)]}return a.invert=function(t,n){var a=hu(n),u=hu(t)*a,c=yu(t)*a,f=yu(n),s=f*i-c*o;return[lu(c*i+f*o,u*e+s*r),wu(s*e-u*r)]},a}function Kc(t){function n(n){return(n=t(n[0]*cu,n[1]*cu))[0]*=uu,n[1]*=uu,n}return t=$c(t[0]*cu,t[1]*cu,t.length>2?t[2]*cu:0),n.invert=function(n){return(n=t.invert(n[0]*cu,n[1]*cu))[0]*=uu,n[1]*=uu,n},n}function Jc(t,n,e,r,i,o){if(e){var a=hu(n),u=yu(n),c=r*e;null==i?(i=n+r*au,o=n-c/2):(i=tf(a,i),o=tf(a,o),(r>0?i<o:i>o)&&(i+=r*au));for(var f,s=i;r>0?s>o:s<o;s-=c)f=Hu([a,-u*hu(s),-u*yu(s)]),t.point(f[0],f[1])}}function tf(t,n){(n=ju(n))[0]-=t,Wu(n);var e=xu(-n[1]);return((-n[2]<0?-e:e)+au-nu)%au}function nf(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:Nu,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function ef(t,n){return fu(t[0]-n[0])<nu&&fu(t[1]-n[1])<nu}function rf(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function of(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach(function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(ef(r,a)){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);i.lineEnd()}else u.push(e=new rf(r,t,null,!0)),c.push(e.o=new rf(r,null,e,!1)),u.push(e=new rf(a,t,null,!1)),c.push(e.o=new rf(a,null,e,!0))}}),u.length){for(c.sort(n),af(u),af(c),o=0,a=c.length;o<a;++o)c[o].e=e=!e;for(var f,s,l=u[0];;){for(var h=l,d=!0;h.v;)if((h=h.n)===l)return;f=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=f.length;o<a;++o)i.point((s=f[o])[0],s[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(f=h.p.z,o=f.length-1;o>=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function af(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}Gc.invert=Gc;var uf=Qa();function cf(t){return fu(t[0])<=ru?t[0]:_u(t[0])*((fu(t[0])+ru)%au-ru)}function ff(t,n){var e=cf(n),r=n[1],i=yu(r),o=[yu(e),-hu(e),0],a=0,u=0;uf.reset(),1===i?r=iu+nu:-1===i&&(r=-iu-nu);for(var c=0,f=t.length;c<f;++c)if(l=(s=t[c]).length)for(var s,l,h=s[l-1],d=cf(h),p=h[1]/2+ou,v=yu(p),g=hu(p),y=0;y<l;++y,d=b,v=x,g=w,h=_){var _=s[y],b=cf(_),m=_[1]/2+ou,x=yu(m),w=hu(m),M=b-d,N=M>=0?1:-1,T=N*M,A=T>ru,S=v*x;if(uf.add(lu(S*N*yu(T),g*w+S*hu(T))),a+=A?M+N*au:M,A^d>=e^b>=e){var k=Vu(ju(h),ju(_));Wu(k);var E=Vu(o,k);Wu(E);var C=(A^M>=0?-1:1)*wu(E[2]);(r>C||r===C&&(k[0]||k[1]))&&(u+=A^M>=0?1:-1)}}return(a<-nu||a<nu&&uf<-nu)^1&u}function sf(t,n,e,r){return function(i){var o,a,u,c=n(i),f=nf(),s=n(f),l=!1,h={point:d,lineStart:v,lineEnd:g,polygonStart:function(){h.point=y,h.lineStart=_,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=v,h.lineEnd=g,a=A(a);var t=ff(o,r);a.length?(l||(i.polygonStart(),l=!0),of(a,hf,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function v(){h.point=p,c.lineStart()}function g(){h.point=d,c.lineEnd()}function y(t,n){u.push([t,n]),s.point(t,n)}function _(){s.lineStart(),u=[]}function b(){y(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(lf))}return h}}function lf(t){return t.length>1}function hf(t,n){return((t=t.x)[0]<0?t[1]-iu-nu:iu-t[1])-((n=n.x)[0]<0?n[1]-iu-nu:iu-n[1])}var df=sf(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?ru:-ru,c=fu(o-e);fu(c-ru)<nu?(t.point(e,r=(r+a)/2>0?iu:-iu),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=ru&&(fu(e-i)<nu&&(e-=i*nu),fu(o-u)<nu&&(o-=u*nu),r=function(t,n,e,r){var i,o,a=yu(t-e);return fu(a)>nu?su((yu(n)*(o=hu(r))*yu(e)-yu(r)*(i=hu(n))*yu(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*iu,r.point(-ru,i),r.point(0,i),r.point(ru,i),r.point(ru,0),r.point(ru,-i),r.point(0,-i),r.point(-ru,-i),r.point(-ru,0),r.point(-ru,i);else if(fu(t[0]-n[0])>nu){var o=t[0]<n[0]?ru:-ru;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])},[-ru,-iu]);function pf(t){var n=hu(t),e=6*cu,r=n>0,i=fu(n)>nu;function o(t,e){return hu(t)*hu(e)>n}function a(t,e,r){var i=[1,0,0],o=Vu(ju(t),ju(e)),a=Xu(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=Vu(i,o),h=$u(i,f);Gu(h,$u(o,s));var d=l,p=Xu(h,d),v=Xu(d,d),g=p*p-v*(Xu(h,h)-1);if(!(g<0)){var y=bu(g),_=$u(d,(-p-y)/v);if(Gu(_,h),_=Hu(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x<m&&(b=m,m=x,x=b);var N=x-m,T=fu(N-ru)<nu;if(!T&&M<w&&(b=w,w=M,M=b),T||N<nu?T?w+M>0^_[1]<(fu(_[0]-m)<nu?w:M):w<=_[1]&&_[1]<=M:N>ru^(m<=_[0]&&_[0]<=x)){var A=$u(d,(-p+y)/v);return Gu(A,h),[_,Hu(A)]}}}function u(n,e){var i=r?t:ru-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return sf(o,function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],v=o(l,h),g=r?v?0:u(l,h):v?u(l+(l<0?ru:-ru),h):0;if(!n&&(f=c=v)&&t.lineStart(),v!==c&&(!(d=a(n,p))||ef(n,d)||ef(p,d))&&(p[0]+=nu,p[1]+=nu,v=o(p[0],p[1])),v!==c)s=0,v?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(i&&n&&r^v){var y;g&e||!(y=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1])))}!v||n&&ef(n,p)||t.point(p[0],p[1]),n=p,c=v,e=g},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}},function(n,r,i,o){Jc(o,t,e,i,n,r)},r?[0,-t]:[-ru,t-ru])}var vf=1e9,gf=-vf;function yf(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return fu(r[0]-t)<nu?i>0?0:3:fu(r[0]-e)<nu?i>0?2:1:fu(r[1]-n)<nu?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,v,g,y,_,b=a,m=nf(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);y=!0,g=!1,p=v=NaN},lineEnd:function(){c&&(M(l,h),d&&g&&m.rejoin(),c.push(m.result()));x.point=w,g&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;e<i;++e)for(var o,a,u=f[e],c=1,s=u.length,l=u[0],h=l[0],d=l[1];c<s;++c)o=h,a=d,l=u[c],h=l[0],d=l[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=A(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&of(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),y)l=o,h=a,d=u,y=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&g)b.point(o,a);else{var c=[p=Math.max(gf,Math.min(vf,p)),v=Math.max(gf,Math.min(vf,v))],m=[o=Math.max(gf,Math.min(vf,o)),a=Math.max(gf,Math.min(vf,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a<f)return;a<s&&(s=a)}else if(l>0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a<f)return;a<s&&(s=a)}if(a=r-c,h||!(a>0)){if(a/=h,h<0){if(a<f)return;a<s&&(s=a)}else if(h>0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a<f)return;a<s&&(s=a)}return f>0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(g||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,v=a,g=u}return x}}var _f,bf,mf,xf=Qa(),wf={sphere:Nu,point:Nu,lineStart:function(){wf.point=Nf,wf.lineEnd=Mf},lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu};function Mf(){wf.point=wf.lineEnd=Nu}function Nf(t,n){_f=t*=cu,bf=yu(n*=cu),mf=hu(n),wf.point=Tf}function Tf(t,n){t*=cu;var e=yu(n*=cu),r=hu(n),i=fu(t-_f),o=hu(i),a=r*yu(i),u=mf*e-bf*r*o,c=bf*e+mf*r*o;xf.add(lu(bu(a*a+u*u),c)),_f=t,bf=e,mf=r}function Af(t){return xf.reset(),Cu(t,wf),+xf}var Sf=[null,null],kf={type:"LineString",coordinates:Sf};function Ef(t,n){return Sf[0]=t,Sf[1]=n,Af(kf)}var Cf={Feature:function(t,n){return zf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(zf(e[r].geometry,n))return!0;return!1}},Pf={Sphere:function(){return!0},Point:function(t,n){return Rf(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Rf(e[r],n))return!0;return!1},LineString:function(t,n){return Df(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Df(e[r],n))return!0;return!1},Polygon:function(t,n){return qf(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(qf(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(zf(e[r],n))return!0;return!1}};function zf(t,n){return!(!t||!Pf.hasOwnProperty(t.type))&&Pf[t.type](t,n)}function Rf(t,n){return 0===Ef(t,n)}function Df(t,n){for(var e,r,i,o=0,a=t.length;o<a;o++){if(0===(r=Ef(t[o],n)))return!0;if(o>0&&(i=Ef(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<eu*i)return!0;e=r}return!1}function qf(t,n){return!!ff(t.map(Lf),Uf(n))}function Lf(t){return(t=t.map(Uf)).pop(),t}function Uf(t){return[t[0]*cu,t[1]*cu]}function Of(t,n,e){var r=g(t,n-nu,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function Bf(t,n,e){var r=g(t,n-nu,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function Ff(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,v=360,y=2.5;function _(){return{type:"MultiLineString",coordinates:b()}}function b(){return g(du(r/p)*p,e,p).map(s).concat(g(du(u/v)*v,a,v).map(l)).concat(g(du(n/h)*h,t,h).filter(function(t){return fu(t%p)>nu}).map(c)).concat(g(du(o/d)*d,i,d).filter(function(t){return fu(t%v)>nu}).map(f))}return _.lines=function(){return b().map(function(t){return{type:"LineString",coordinates:t}})},_.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),_.precision(y)):[[r,u],[e,a]]},_.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),_.precision(y)):[[n,o],[t,i]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(p=+t[0],v=+t[1],_):[p,v]},_.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],_):[h,d]},_.precision=function(h){return arguments.length?(y=+h,c=Of(o,i,90),f=Bf(n,t,y),s=Of(u,a,90),l=Bf(r,e,y),_):y},_.extentMajor([[-180,-90+nu],[180,90-nu]]).extentMinor([[-180,-80-nu],[180,80+nu]])}function Yf(t){return t}var If,Hf,jf,Xf,Vf=Qa(),Gf=Qa(),$f={point:Nu,lineStart:Nu,lineEnd:Nu,polygonStart:function(){$f.lineStart=Wf,$f.lineEnd=Kf},polygonEnd:function(){$f.lineStart=$f.lineEnd=$f.point=Nu,Vf.add(fu(Gf)),Gf.reset()},result:function(){var t=Vf/2;return Vf.reset(),t}};function Wf(){$f.point=Zf}function Zf(t,n){$f.point=Qf,If=jf=t,Hf=Xf=n}function Qf(t,n){Gf.add(Xf*t-jf*n),jf=t,Xf=n}function Kf(){Qf(If,Hf)}var Jf=1/0,ts=Jf,ns=-Jf,es=ns,rs={point:function(t,n){t<Jf&&(Jf=t);t>ns&&(ns=t);n<ts&&(ts=n);n>es&&(es=n)},lineStart:Nu,lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu,result:function(){var t=[[Jf,ts],[ns,es]];return ns=es=-(ts=Jf=1/0),t}};var is,os,as,us,cs=0,fs=0,ss=0,ls=0,hs=0,ds=0,ps=0,vs=0,gs=0,ys={point:_s,lineStart:bs,lineEnd:ws,polygonStart:function(){ys.lineStart=Ms,ys.lineEnd=Ns},polygonEnd:function(){ys.point=_s,ys.lineStart=bs,ys.lineEnd=ws},result:function(){var t=gs?[ps/gs,vs/gs]:ds?[ls/ds,hs/ds]:ss?[cs/ss,fs/ss]:[NaN,NaN];return cs=fs=ss=ls=hs=ds=ps=vs=gs=0,t}};function _s(t,n){cs+=t,fs+=n,++ss}function bs(){ys.point=ms}function ms(t,n){ys.point=xs,_s(as=t,us=n)}function xs(t,n){var e=t-as,r=n-us,i=bu(e*e+r*r);ls+=i*(as+t)/2,hs+=i*(us+n)/2,ds+=i,_s(as=t,us=n)}function ws(){ys.point=_s}function Ms(){ys.point=Ts}function Ns(){As(is,os)}function Ts(t,n){ys.point=As,_s(is=as=t,os=us=n)}function As(t,n){var e=t-as,r=n-us,i=bu(e*e+r*r);ls+=i*(as+t)/2,hs+=i*(us+n)/2,ds+=i,ps+=(i=us*t-as*n)*(as+t),vs+=i*(us+n),gs+=3*i,_s(as=t,us=n)}function Ss(t){this._context=t}Ss.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,au)}},result:Nu};var ks,Es,Cs,Ps,zs,Rs=Qa(),Ds={point:Nu,lineStart:function(){Ds.point=qs},lineEnd:function(){ks&&Ls(Es,Cs),Ds.point=Nu},polygonStart:function(){ks=!0},polygonEnd:function(){ks=null},result:function(){var t=+Rs;return Rs.reset(),t}};function qs(t,n){Ds.point=Ls,Es=Ps=t,Cs=zs=n}function Ls(t,n){Ps-=t,zs-=n,Rs.add(bu(Ps*Ps+zs*zs)),Ps=t,zs=n}function Us(){this._string=[]}function Os(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Bs(t){return function(n){var e=new Fs;for(var r in t)e[r]=t[r];return e.stream=n,e}}function Fs(){}function Ys(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Cu(e,t.stream(rs)),n(rs.result()),null!=r&&t.clipExtent(r),t}function Is(t,n,e){return Ys(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])},e)}function Hs(t,n,e){return Is(t,[[0,0],n],e)}function js(t,n,e){return Ys(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])},e)}function Xs(t,n,e){return Ys(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])},e)}Us.prototype={_radius:4.5,_circle:Os(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=Os(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},Fs.prototype={constructor:Fs,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Vs=16,Gs=hu(30*cu);function $s(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,v,g){var y=f-r,_=s-i,b=y*y+_*_;if(b>4*n&&v--){var m=a+h,x=u+d,w=c+p,M=bu(m*m+x*x+w*w),N=wu(w/=M),T=fu(fu(w)-1)<nu||fu(o-l)<nu?(o+l)/2:lu(x,m),A=t(T,N),S=A[0],k=A[1],E=S-r,C=k-i,P=_*E-y*C;(P*P/b>n||fu((y*E+_*C)/b-.5)>.3||a*h+u*d+c*p<Gs)&&(e(r,i,o,a,u,c,S,k,T,m/=M,x/=M,w,v,g),g.point(S,k),e(S,k,T,m,x,w,f,s,l,h,d,p,v,g))}}return function(n){var r,i,o,a,u,c,f,s,l,h,d,p,v={point:g,lineStart:y,lineEnd:b,polygonStart:function(){n.polygonStart(),v.lineStart=m},polygonEnd:function(){n.polygonEnd(),v.lineStart=y}};function g(e,r){e=t(e,r),n.point(e[0],e[1])}function y(){s=NaN,v.point=_,n.lineStart()}function _(r,i){var o=ju([r,i]),a=t(r,i);e(s,l,f,h,d,p,s=a[0],l=a[1],f=r,h=o[0],d=o[1],p=o[2],Vs,n),n.point(s,l)}function b(){v.point=g,n.lineEnd()}function m(){y(),v.point=x,v.lineEnd=w}function x(t,n){_(r=t,n),i=s,o=l,a=h,u=d,c=p,v.point=_}function w(){e(s,l,f,h,d,p,i,o,r,a,u,c,Vs,n),v.lineEnd=b,b()}return v}}(t,n):function(t){return Bs({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var Ws=Bs({point:function(t,n){this.stream.point(t*cu,n*cu)}});function Zs(t,n,e,r,i,o){var a=hu(o),u=yu(o),c=a*t,f=u*t,s=a/t,l=u/t,h=(u*e-a*n)/t,d=(u*n+a*e)/t;function p(t,o){return[c*(t*=r)-f*(o*=i)+n,e-f*t-c*o]}return p.invert=function(t,n){return[r*(s*t-l*n+h),i*(d-l*t-s*n)]},p}function Qs(t){return Ks(function(){return t})()}function Ks(t){var n,e,r,i,o,a,u,c,f,s,l=150,h=480,d=250,p=0,v=0,g=0,y=0,_=0,b=0,m=1,x=1,w=null,M=df,N=null,T=Yf,A=.5;function S(t){return c(t[0]*cu,t[1]*cu)}function k(t){return(t=c.invert(t[0],t[1]))&&[t[0]*uu,t[1]*uu]}function E(){var t=Zs(l,0,0,m,x,b).apply(null,n(p,v)),r=(b?Zs:function(t,n,e,r,i){function o(o,a){return[n+t*(o*=r),e-t*(a*=i)]}return o.invert=function(o,a){return[(o-n)/t*r,(e-a)/t*i]},o})(l,h-t[0],d-t[1],m,x,b);return e=$c(g,y,_),u=Vc(n,r),c=Vc(e,u),a=$s(u,A),C()}function C(){return f=s=null,S}return S.stream=function(t){return f&&s===t?f:f=Ws(function(t){return Bs({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(M(a(T(s=t)))))},S.preclip=function(t){return arguments.length?(M=t,w=void 0,C()):M},S.postclip=function(t){return arguments.length?(T=t,N=r=i=o=null,C()):T},S.clipAngle=function(t){return arguments.length?(M=+t?pf(w=t*cu):(w=null,df),C()):w*uu},S.clipExtent=function(t){return arguments.length?(T=null==t?(N=r=i=o=null,Yf):yf(N=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),C()):null==N?null:[[N,r],[i,o]]},S.scale=function(t){return arguments.length?(l=+t,E()):l},S.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],E()):[h,d]},S.center=function(t){return arguments.length?(p=t[0]%360*cu,v=t[1]%360*cu,E()):[p*uu,v*uu]},S.rotate=function(t){return arguments.length?(g=t[0]%360*cu,y=t[1]%360*cu,_=t.length>2?t[2]%360*cu:0,E()):[g*uu,y*uu,_*uu]},S.angle=function(t){return arguments.length?(b=t%360*cu,E()):b*uu},S.reflectX=function(t){return arguments.length?(m=t?-1:1,E()):m<0},S.reflectY=function(t){return arguments.length?(x=t?-1:1,E()):x<0},S.precision=function(t){return arguments.length?(a=$s(u,A=t*t),C()):bu(A)},S.fitExtent=function(t,n){return Is(S,t,n)},S.fitSize=function(t,n){return Hs(S,t,n)},S.fitWidth=function(t,n){return js(S,t,n)},S.fitHeight=function(t,n){return Xs(S,t,n)},function(){return n=t.apply(this,arguments),S.invert=n.invert&&k,E()}}function Js(t){var n=0,e=ru/3,r=Ks(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*cu,e=t[1]*cu):[n*uu,e*uu]},i}function tl(t,n){var e=yu(t),r=(e+yu(n))/2;if(fu(r)<nu)return function(t){var n=hu(t);function e(t,e){return[t*n,yu(e)/n]}return e.invert=function(t,e){return[t/n,wu(e*n)]},e}(t);var i=1+e*(2*r-e),o=bu(i)/r;function a(t,n){var e=bu(i-2*r*yu(n))/r;return[e*yu(t*=r),o-e*hu(t)]}return a.invert=function(t,n){var e=o-n,a=lu(t,fu(e))*_u(e);return e*r<0&&(a-=ru*_u(t)*_u(e)),[a/r,wu((i-(t*t+e*e)*r*r)/(2*r))]},a}function nl(){return Js(tl).scale(155.424).center([0,33.6442])}function el(){return nl().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function rl(t){return function(n,e){var r=hu(n),i=hu(e),o=t(r*i);return[o*i*yu(n),o*yu(e)]}}function il(t){return function(n,e){var r=bu(n*n+e*e),i=t(r),o=yu(i),a=hu(i);return[lu(n*o,r*a),wu(r&&e*o/r)]}}var ol=rl(function(t){return bu(2/(1+t))});ol.invert=il(function(t){return 2*wu(t/2)});var al=rl(function(t){return(t=xu(t))&&t/yu(t)});function ul(t,n){return[t,vu(mu((iu+n)/2))]}function cl(t){var n,e,r,i=Qs(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=ru*a(),u=i(Kc(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===ul?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function fl(t){return mu((iu+t)/2)}function sl(t,n){var e=hu(t),r=t===n?yu(t):vu(e/hu(n))/vu(fl(n)/fl(t)),i=e*gu(fl(t),r)/r;if(!r)return ul;function o(t,n){i>0?n<-iu+nu&&(n=-iu+nu):n>iu-nu&&(n=iu-nu);var e=i/gu(fl(n),r);return[e*yu(r*t),i-e*hu(r*t)]}return o.invert=function(t,n){var e=i-n,o=_u(r)*bu(t*t+e*e),a=lu(t,fu(e))*_u(e);return e*r<0&&(a-=ru*_u(t)*_u(e)),[a/r,2*su(gu(i/o,1/r))-iu]},o}function ll(t,n){return[t,n]}function hl(t,n){var e=hu(t),r=t===n?yu(t):(e-hu(n))/(n-t),i=e/r+t;if(fu(r)<nu)return ll;function o(t,n){var e=i-n,o=r*t;return[e*yu(o),i-e*hu(o)]}return o.invert=function(t,n){var e=i-n,o=lu(t,fu(e))*_u(e);return e*r<0&&(o-=ru*_u(t)*_u(e)),[o/r,i-_u(r)*bu(t*t+e*e)]},o}al.invert=il(function(t){return t}),ul.invert=function(t,n){return[t,2*su(pu(n))-iu]},ll.invert=ll;var dl=1.340264,pl=-.081106,vl=893e-6,gl=.003796,yl=bu(3)/2;function _l(t,n){var e=wu(yl*yu(n)),r=e*e,i=r*r*r;return[t*hu(e)/(yl*(dl+3*pl*r+i*(7*vl+9*gl*r))),e*(dl+pl*r+i*(vl+gl*r))]}function bl(t,n){var e=hu(n),r=hu(t)*e;return[e*yu(t)/r,yu(n)/r]}function ml(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function xl(t,n){return[hu(n)*yu(t),yu(n)]}function wl(t,n){var e=hu(n),r=1+hu(t)*e;return[e*yu(t)/r,yu(n)/r]}function Ml(t,n){return[vu(mu((iu+n)/2)),-t]}function Nl(t,n){return t.parent===n.parent?1:2}function Tl(t,n){return t+n.x}function Al(t,n){return Math.max(t,n.y)}function Sl(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function kl(t,n){var e,r,i,o,a,u=new zl(t),c=+t.value&&(u.value=t.value),f=[u];for(null==n&&(n=El);e=f.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(a=i.length))for(e.children=new Array(a),o=a-1;o>=0;--o)f.push(r=e.children[o]=new zl(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Pl)}function El(t){return t.children}function Cl(t){t.data=t.data.data}function Pl(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function zl(t){this.data=t,this.depth=this.height=0,this.parent=null}_l.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(dl+pl*i+o*(vl+gl*i))-n)/(dl+3*pl*i+o*(7*vl+9*gl*i)))*r)*i*i,!(fu(e)<eu));++a);return[yl*t*(dl+3*pl*i+o*(7*vl+9*gl*i))/hu(r),wu(yu(r)/yl)]},bl.invert=il(su),ml.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(fu(e)>nu&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},xl.invert=il(wu),wl.invert=il(function(t){return 2*su(t)}),Ml.invert=function(t,n){return[-n,2*su(pu(t))-iu]},zl.prototype=kl.prototype={constructor:zl,count:function(){return this.eachAfter(Sl)},each:function(t){var n,e,r,i,o=this,a=[o];do{for(n=a.reverse(),a=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r<i;++r)a.push(e[r])}while(a.length);return this},eachAfter:function(t){for(var n,e,r,i=this,o=[i],a=[];i=o.pop();)if(a.push(i),n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e]);for(;i=a.pop();)t(i);return this},eachBefore:function(t){for(var n,e,r=this,i=[r];r=i.pop();)if(t(r),n=r.children)for(e=n.length-1;e>=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return kl(this).eachBefore(Cl)}};var Rl=Array.prototype.slice;function Dl(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(Rl.call(t))).length,o=[];r<i;)n=t[r],e&&Ul(e,n)?++r:(e=Bl(o=ql(o,n)),r=0);return e}function ql(t,n){var e,r;if(Ol(n,t))return[n];for(e=0;e<t.length;++e)if(Ll(n,t[e])&&Ol(Fl(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(Ll(Fl(t[e],t[r]),n)&&Ll(Fl(t[e],n),t[r])&&Ll(Fl(t[r],n),t[e])&&Ol(Yl(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function Ll(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function Ul(t,n){var e=t.r-n.r+1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function Ol(t,n){for(var e=0;e<n.length;++e)if(!Ul(t,n[e]))return!1;return!0}function Bl(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return Fl(t[0],t[1]);case 3:return Yl(t[0],t[1],t[2])}}function Fl(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,a=n.y,u=n.r,c=o-e,f=a-r,s=u-i,l=Math.sqrt(c*c+f*f);return{x:(e+o+c/l*s)/2,y:(r+a+f/l*s)/2,r:(l+i+u)/2}}function Yl(t,n,e){var r=t.x,i=t.y,o=t.r,a=n.x,u=n.y,c=n.r,f=e.x,s=e.y,l=e.r,h=r-a,d=r-f,p=i-u,v=i-s,g=c-o,y=l-o,_=r*r+i*i-o*o,b=_-a*a-u*u+c*c,m=_-f*f-s*s+l*l,x=d*p-h*v,w=(p*m-v*b)/(2*x)-r,M=(v*g-p*y)/x,N=(d*b-h*m)/(2*x)-i,T=(h*y-d*g)/x,A=M*M+T*T-1,S=2*(o+w*M+N*T),k=w*w+N*N-o*o,E=-(A?(S+Math.sqrt(S*S-4*A*k))/(2*A):k/S);return{x:r+w+M*E,y:i+N+T*E,r:E}}function Il(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function Hl(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function jl(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function Xl(t){this._=t,this.next=null,this.previous=null}function Vl(t){if(!(i=t.length))return 0;var n,e,r,i,o,a,u,c,f,s,l;if((n=t[0]).x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Il(e,n,r=t[2]),n=new Xl(n),e=new Xl(e),r=new Xl(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(u=3;u<i;++u){Il(n._,e._,r=t[u]),r=new Xl(r),c=e.next,f=n.previous,s=e._.r,l=n._.r;do{if(s<=l){if(Hl(c._,r._)){e=c,n.next=e,e.previous=n,--u;continue t}s+=c._.r,c=c.next}else{if(Hl(f._,r._)){(n=f).next=e,e.previous=n,--u;continue t}l+=f._.r,f=f.previous}}while(c!==f.next);for(r.previous=n,r.next=e,n.next=e.previous=e=r,o=jl(n);(r=r.next)!==e;)(a=jl(r))<o&&(n=r,o=a);e=n.next}for(n=[e._],r=e;(r=r.next)!==e;)n.push(r._);for(r=Dl(n),u=0;u<i;++u)(n=t[u]).x-=r.x,n.y-=r.y;return r.r}function Gl(t){return null==t?null:$l(t)}function $l(t){if("function"!=typeof t)throw new Error;return t}function Wl(){return 0}function Zl(t){return function(){return t}}function Ql(t){return Math.sqrt(t.value)}function Kl(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function Jl(t,n){return function(e){if(r=e.children){var r,i,o,a=r.length,u=t(e)*n||0;if(u)for(i=0;i<a;++i)r[i].r+=u;if(o=Vl(r),u)for(i=0;i<a;++i)r[i].r-=u;e.r=o+u}}}function th(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function nh(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function eh(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(r-n)/t.value;++u<c;)(o=a[u]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*f}var rh="$",ih={depth:-1},oh={};function ah(t){return t.id}function uh(t){return t.parentId}function ch(t,n){return t.parent===n.parent?1:2}function fh(t){var n=t.children;return n?n[0]:t.t}function sh(t){var n=t.children;return n?n[n.length-1]:t.t}function lh(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function hh(t,n,e){return t.a.parent===n.parent?t.a:e}function dh(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function ph(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++u<c;)(o=a[u]).x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*f}dh.prototype=Object.create(zl.prototype);var vh=(1+Math.sqrt(5))/2;function gh(t,n,e,r,i,o){for(var a,u,c,f,s,l,h,d,p,v,g,y=[],_=n.children,b=0,m=0,x=_.length,w=n.value;b<x;){c=i-e,f=o-r;do{s=_[m++].value}while(!s&&m<x);for(l=h=s,g=s*s*(v=Math.max(f/c,c/f)/(w*t)),p=Math.max(h/g,g/l);m<x;++m){if(s+=u=_[m].value,u<l&&(l=u),u>h&&(h=u),g=s*s*v,(d=Math.max(h/g,g/l))>p){s-=u;break}p=d}y.push(a={value:s,dice:c<f,children:_.slice(b,m)}),a.dice?eh(a,e,r,i,w?r+=f*s/w:o):ph(a,e,r,w?e+=c*s/w:i,o),w-=s,b=m}return y}var yh=function t(n){function e(t,e,r,i,o){gh(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(vh);var _h=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l<h;){for(c=(u=a[l]).children,f=u.value=0,s=c.length;f<s;++f)u.value+=c[f].value;u.dice?eh(u,e,r,i,r+=(o-r)*u.value/d):ph(u,e,r,e+=(i-e)*u.value/d,o),d-=u.value}else t._squarify=a=gh(n,t,e,r,i,o),a.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(vh);function bh(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function mh(t,n){return t[0]-n[0]||t[1]-n[1]}function xh(t){for(var n=t.length,e=[0,1],r=2,i=2;i<n;++i){for(;r>1&&bh(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function wh(){return Math.random()}var Mh=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(wh),Nh=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(wh),Th=function t(n){function e(){var t=Nh.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(wh),Ah=function t(n){function e(t){return function(){for(var e=0,r=0;r<t;++r)e+=n();return e}}return e.source=t,e}(wh),Sh=function t(n){function e(t){var e=Ah.source(n)(t);return function(){return e()/t}}return e.source=t,e}(wh),kh=function t(n){function e(t){return function(){return-Math.log(1-n())/t}}return e.source=t,e}(wh);function Eh(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function Ch(t,n){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(n).domain(t)}return this}var Ph=Array.prototype,zh=Ph.map,Rh=Ph.slice,Dh={name:"implicit"};function qh(){var t=co(),n=[],e=[],r=Dh;function i(i){var o=i+"",a=t.get(o);if(!a){if(r!==Dh)return r;t.set(o,a=n.push(i))}return e[(a-1)%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=co();for(var r,o,a=-1,u=e.length;++a<u;)t.has(o=(r=e[a])+"")||t.set(o,n.push(r));return i},i.range=function(t){return arguments.length?(e=Rh.call(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return qh(n,e).unknown(r)},Eh.apply(i,arguments),i}function Lh(){var t,n,e=qh().unknown(void 0),r=e.domain,i=e.range,o=[0,1],a=!1,u=0,c=0,f=.5;function s(){var e=r().length,s=o[1]<o[0],l=o[s-0],h=o[1-s];t=(h-l)/Math.max(1,e-u+2*c),a&&(t=Math.floor(t)),l+=(h-l-t*(e-u))*f,n=t*(1-u),a&&(l=Math.round(l),n=Math.round(n));var d=g(e).map(function(n){return l+t*n});return i(s?d.reverse():d)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),s()):r()},e.range=function(t){return arguments.length?(o=[+t[0],+t[1]],s()):o.slice()},e.rangeRound=function(t){return o=[+t[0],+t[1]],a=!0,s()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(a=!!t,s()):a},e.padding=function(t){return arguments.length?(u=Math.min(1,c=+t),s()):u},e.paddingInner=function(t){return arguments.length?(u=Math.min(1,t),s()):u},e.paddingOuter=function(t){return arguments.length?(c=+t,s()):c},e.align=function(t){return arguments.length?(f=Math.max(0,Math.min(1,t)),s()):f},e.copy=function(){return Lh(r(),o).round(a).paddingInner(u).paddingOuter(c).align(f)},Eh.apply(s(),arguments)}function Uh(t){return+t}var Oh=[0,1];function Bh(t){return t}function Fh(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function Yh(t){var n,e=t[0],r=t[t.length-1];return e>r&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function Ih(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i<r?(r=Fh(i,r),o=e(a,o)):(r=Fh(r,i),o=e(o,a)),function(t){return o(r(t))}}function Hh(t,n,e){var r=Math.min(t.length,n.length)-1,o=new Array(r),a=new Array(r),u=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++u<r;)o[u]=Fh(t[u],t[u+1]),a[u]=e(n[u],n[u+1]);return function(n){var e=i(t,n,1,r)-1;return a[e](o[e](n))}}function jh(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Xh(){var t,n,e,r,i,o,a=Oh,u=Oh,c=Te,f=Bh;function s(){return r=Math.min(a.length,u.length)>2?Hh:Ih,i=o=null,l}function l(n){return isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),me)))(e)))},l.domain=function(t){return arguments.length?(a=zh.call(t,Uh),f===Bh||(f=Yh(a)),s()):a.slice()},l.range=function(t){return arguments.length?(u=Rh.call(t),s()):u.slice()},l.rangeRound=function(t){return u=Rh.call(t),c=Ae,s()},l.clamp=function(t){return arguments.length?(f=t?Yh(a):Bh,l):f!==Bh},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Vh(t,n){return Xh()(t,n)}function Gh(n,e,r,i){var o,a=w(n,e,r);switch((i=Oa(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=Wa(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=Za(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=$a(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function $h(t){var n=t.domain;return t.ticks=function(t){var e=n();return m(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Gh(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i=n(),o=0,a=i.length-1,u=i[o],c=i[a];return c<u&&(r=u,u=c,c=r,r=o,o=a,a=r),(r=x(u,c,e))>0?r=x(u=Math.floor(u/r)*r,c=Math.ceil(c/r)*r,e):r<0&&(r=x(u=Math.ceil(u*r)/r,c=Math.floor(c*r)/r,e)),r>0?(i[o]=Math.floor(u/r)*r,i[a]=Math.ceil(c/r)*r,n(i)):r<0&&(i[o]=Math.ceil(u*r)/r,i[a]=Math.floor(c*r)/r,n(i)),t},t}function Wh(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(e=r,r=i,i=e,e=o,o=a,a=e),t[r]=n.floor(o),t[i]=n.ceil(a),t}function Zh(t){return Math.log(t)}function Qh(t){return Math.exp(t)}function Kh(t){return-Math.log(-t)}function Jh(t){return-Math.exp(-t)}function td(t){return isFinite(t)?+("1e"+t):t<0?0:t}function nd(t){return function(n){return-t(-n)}}function ed(n){var e,r,i=n(Zh,Qh),o=i.domain,a=10;function u(){return e=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}(a),r=function(t){return 10===t?td:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}(a),o()[0]<0?(e=nd(e),r=nd(r),n(Kh,Jh)):n(Zh,Qh),i}return i.base=function(t){return arguments.length?(a=+t,u()):a},i.domain=function(t){return arguments.length?(o(t),u()):o()},i.ticks=function(t){var n,i=o(),u=i[0],c=i[i.length-1];(n=c<u)&&(h=u,u=c,c=h);var f,s,l,h=e(u),d=e(c),p=null==t?10:+t,v=[];if(!(a%1)&&d-h<p){if(h=Math.round(h)-1,d=Math.round(d)+1,u>0){for(;h<d;++h)for(s=1,f=r(h);s<a;++s)if(!((l=f*s)<u)){if(l>c)break;v.push(l)}}else for(;h<d;++h)for(s=a-1,f=r(h);s>=1;--s)if(!((l=f*s)<u)){if(l>c)break;v.push(l)}}else v=m(h,d,Math.min(d-h,p)).map(r);return n?v.reverse():v},i.tickFormat=function(n,o){if(null==o&&(o=10===a?".0e":","),"function"!=typeof o&&(o=t.format(o)),n===1/0)return o;null==n&&(n=10);var u=Math.max(1,a*n/i.ticks().length);return function(t){var n=t/r(Math.round(e(t)));return n*a<a-.5&&(n*=a),n<=u?o(t):""}},i.nice=function(){return o(Wh(o(),{floor:function(t){return r(Math.floor(e(t)))},ceil:function(t){return r(Math.ceil(e(t)))}}))},i}function rd(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function id(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function od(t){var n=1,e=t(rd(n),id(n));return e.constant=function(e){return arguments.length?t(rd(n=+e),id(n)):n},$h(e)}function ad(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function ud(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function cd(t){return t<0?-t*t:t*t}function fd(t){var n=t(Bh,Bh),e=1;function r(){return 1===e?t(Bh,Bh):.5===e?t(ud,cd):t(ad(e),ad(1/e))}return n.exponent=function(t){return arguments.length?(e=+t,r()):e},$h(n)}function sd(){var t=fd(Xh());return t.copy=function(){return jh(t,sd()).exponent(t.exponent())},Eh.apply(t,arguments),t}var ld=new Date,hd=new Date;function dd(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=function(n){return t(n=new Date(+n)),n},i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},i.range=function(e,r,o){var a,u=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return u;do{u.push(a=new Date(+e)),n(e,o),t(e)}while(a<e&&e<r);return u},i.filter=function(e){return dd(function(n){if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return ld.setTime(+n),hd.setTime(+r),t(ld),t(hd),Math.floor(e(ld,hd))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var pd=dd(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});pd.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?dd(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):pd:null};var vd=pd.range,gd=6e4,yd=6048e5,_d=dd(function(t){t.setTime(t-t.getMilliseconds())},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),bd=_d.range,md=dd(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,n){t.setTime(+t+n*gd)},function(t,n){return(n-t)/gd},function(t){return t.getMinutes()}),xd=md.range,wd=dd(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*gd)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),Md=wd.range,Nd=dd(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*gd)/864e5},function(t){return t.getDate()-1}),Td=Nd.range;function Ad(t){return dd(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*gd)/yd})}var Sd=Ad(0),kd=Ad(1),Ed=Ad(2),Cd=Ad(3),Pd=Ad(4),zd=Ad(5),Rd=Ad(6),Dd=Sd.range,qd=kd.range,Ld=Ed.range,Ud=Cd.range,Od=Pd.range,Bd=zd.range,Fd=Rd.range,Yd=dd(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),Id=Yd.range,Hd=dd(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Hd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?dd(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var jd=Hd.range,Xd=dd(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*gd)},function(t,n){return(n-t)/gd},function(t){return t.getUTCMinutes()}),Vd=Xd.range,Gd=dd(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),$d=Gd.range,Wd=dd(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),Zd=Wd.range;function Qd(t){return dd(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/yd})}var Kd=Qd(0),Jd=Qd(1),tp=Qd(2),np=Qd(3),ep=Qd(4),rp=Qd(5),ip=Qd(6),op=Kd.range,ap=Jd.range,up=tp.range,cp=np.range,fp=ep.range,sp=rp.range,lp=ip.range,hp=dd(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),dp=hp.range,pp=dd(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});pp.every=function(t){return isFinite(t=Math.floor(t))&&t>0?dd(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var vp=pp.range;function gp(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function yp(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function _p(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function bp(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=Sp(i),s=kp(i),l=Sp(o),h=kp(o),d=Sp(a),p=kp(a),v=Sp(u),g=kp(u),y=Sp(c),_=kp(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Wp,e:Wp,f:tv,H:Zp,I:Qp,j:Kp,L:Jp,m:nv,M:ev,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Cv,s:Pv,S:rv,u:iv,U:ov,V:av,w:uv,W:cv,x:null,X:null,y:fv,Y:sv,Z:lv,"%":Ev},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:hv,e:hv,f:yv,H:dv,I:pv,j:vv,L:gv,m:_v,M:bv,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Cv,s:Pv,S:mv,u:xv,U:wv,V:Mv,w:Nv,W:Tv,x:null,X:null,y:Av,Y:Sv,Z:kv,"%":Ev},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=_[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=g[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,e,r){return N(t,n,e,r)},d:Bp,e:Bp,f:Xp,H:Yp,I:Yp,j:Fp,L:jp,m:Op,M:Ip,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s[r[0].toLowerCase()],e+r[0].length):-1},q:Up,Q:Gp,s:$p,S:Hp,u:Cp,U:Pp,V:zp,w:Ep,W:Rp,x:function(t,n,r){return N(t,e,n,r)},X:function(t,n,e){return N(t,r,n,e)},y:qp,Y:Dp,Z:Lp,"%":Vp};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u<f;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=xp[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=n[r])&&(r=o(e,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join("")}}function M(t,n){return function(e){var r,i,o=_p(1900,void 0,1);if(N(o,t,e+="",0)!=e.length)return null;if("Q"in o)return new Date(o.Q);if("s"in o)return new Date(1e3*o.s+("L"in o?o.L:0));if(!n||"Z"in o||(o.Z=0),"p"in o&&(o.H=o.H%12+12*o.p),void 0===o.m&&(o.m="q"in o?o.q:0),"V"in o){if(o.V<1||o.V>53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=yp(_p(o.y,0,1))).getUTCDay(),r=i>4||0===i?Jd.ceil(r):Jd(r),r=Wd.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=gp(_p(o.y,0,1))).getDay(),r=i>4||0===i?kd.ceil(r):kd(r),r=Nd.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?yp(_p(o.y,0,1)).getUTCDay():gp(_p(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,yp(o)):gp(o)}}function N(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a<u;){if(r>=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in xp?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var mp,xp={"-":"",_:" ",0:"0"},wp=/^\s*\d+/,Mp=/^%/,Np=/[\\^$*+?|[\]().{}]/g;function Tp(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function Ap(t){return t.replace(Np,"\\$&")}function Sp(t){return new RegExp("^(?:"+t.map(Ap).join("|")+")","i")}function kp(t){for(var n={},e=-1,r=t.length;++e<r;)n[t[e].toLowerCase()]=e;return n}function Ep(t,n,e){var r=wp.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Cp(t,n,e){var r=wp.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Pp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function zp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Rp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Dp(t,n,e){var r=wp.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function qp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function Lp(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Up(t,n,e){var r=wp.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Op(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Bp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Fp(t,n,e){var r=wp.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Yp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Ip(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Hp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function jp(t,n,e){var r=wp.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Xp(t,n,e){var r=wp.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Vp(t,n,e){var r=Mp.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Gp(t,n,e){var r=wp.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function $p(t,n,e){var r=wp.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Wp(t,n){return Tp(t.getDate(),n,2)}function Zp(t,n){return Tp(t.getHours(),n,2)}function Qp(t,n){return Tp(t.getHours()%12||12,n,2)}function Kp(t,n){return Tp(1+Nd.count(Hd(t),t),n,3)}function Jp(t,n){return Tp(t.getMilliseconds(),n,3)}function tv(t,n){return Jp(t,n)+"000"}function nv(t,n){return Tp(t.getMonth()+1,n,2)}function ev(t,n){return Tp(t.getMinutes(),n,2)}function rv(t,n){return Tp(t.getSeconds(),n,2)}function iv(t){var n=t.getDay();return 0===n?7:n}function ov(t,n){return Tp(Sd.count(Hd(t)-1,t),n,2)}function av(t,n){var e=t.getDay();return t=e>=4||0===e?Pd(t):Pd.ceil(t),Tp(Pd.count(Hd(t),t)+(4===Hd(t).getDay()),n,2)}function uv(t){return t.getDay()}function cv(t,n){return Tp(kd.count(Hd(t)-1,t),n,2)}function fv(t,n){return Tp(t.getFullYear()%100,n,2)}function sv(t,n){return Tp(t.getFullYear()%1e4,n,4)}function lv(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+Tp(n/60|0,"0",2)+Tp(n%60,"0",2)}function hv(t,n){return Tp(t.getUTCDate(),n,2)}function dv(t,n){return Tp(t.getUTCHours(),n,2)}function pv(t,n){return Tp(t.getUTCHours()%12||12,n,2)}function vv(t,n){return Tp(1+Wd.count(pp(t),t),n,3)}function gv(t,n){return Tp(t.getUTCMilliseconds(),n,3)}function yv(t,n){return gv(t,n)+"000"}function _v(t,n){return Tp(t.getUTCMonth()+1,n,2)}function bv(t,n){return Tp(t.getUTCMinutes(),n,2)}function mv(t,n){return Tp(t.getUTCSeconds(),n,2)}function xv(t){var n=t.getUTCDay();return 0===n?7:n}function wv(t,n){return Tp(Kd.count(pp(t)-1,t),n,2)}function Mv(t,n){var e=t.getUTCDay();return t=e>=4||0===e?ep(t):ep.ceil(t),Tp(ep.count(pp(t),t)+(4===pp(t).getUTCDay()),n,2)}function Nv(t){return t.getUTCDay()}function Tv(t,n){return Tp(Jd.count(pp(t)-1,t),n,2)}function Av(t,n){return Tp(t.getUTCFullYear()%100,n,2)}function Sv(t,n){return Tp(t.getUTCFullYear()%1e4,n,4)}function kv(){return"+0000"}function Ev(){return"%"}function Cv(t){return+t}function Pv(t){return Math.floor(+t/1e3)}function zv(n){return mp=bp(n),t.timeFormat=mp.format,t.timeParse=mp.parse,t.utcFormat=mp.utcFormat,t.utcParse=mp.utcParse,mp}zv({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Rv=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat("%Y-%m-%dT%H:%M:%S.%LZ");var Dv=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse("%Y-%m-%dT%H:%M:%S.%LZ"),qv=1e3,Lv=60*qv,Uv=60*Lv,Ov=24*Uv,Bv=7*Ov,Fv=30*Ov,Yv=365*Ov;function Iv(t){return new Date(t)}function Hv(t){return t instanceof Date?+t:+new Date(+t)}function jv(t,n,r,i,o,a,u,c,f){var s=Vh(Bh,Bh),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),v=f("%I:%M"),g=f("%I %p"),y=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y"),x=[[u,1,qv],[u,5,5*qv],[u,15,15*qv],[u,30,30*qv],[a,1,Lv],[a,5,5*Lv],[a,15,15*Lv],[a,30,30*Lv],[o,1,Uv],[o,3,3*Uv],[o,6,6*Uv],[o,12,12*Uv],[i,1,Ov],[i,2,2*Ov],[r,1,Bv],[n,1,Fv],[n,3,3*Fv],[t,1,Yv]];function M(e){return(u(e)<e?d:a(e)<e?p:o(e)<e?v:i(e)<e?g:n(e)<e?r(e)<e?y:_:t(e)<e?b:m)(e)}function N(n,r,i,o){if(null==n&&(n=10),"number"==typeof n){var a=Math.abs(i-r)/n,u=e(function(t){return t[2]}).right(x,a);u===x.length?(o=w(r/Yv,i/Yv,n),n=t):u?(o=(u=x[a/x[u-1][2]<x[u][2]/a?u-1:u])[1],n=u[0]):(o=Math.max(w(r,i,n),1),n=c)}return null==o?n:n.every(o)}return s.invert=function(t){return new Date(l(t))},s.domain=function(t){return arguments.length?h(zh.call(t,Hv)):h().map(Iv)},s.ticks=function(t,n){var e,r=h(),i=r[0],o=r[r.length-1],a=o<i;return a&&(e=i,i=o,o=e),e=(e=N(t,i,o,n))?e.range(i,o+1):[],a?e.reverse():e},s.tickFormat=function(t,n){return null==n?M:f(n)},s.nice=function(t,n){var e=h();return(t=N(t,e[0],e[e.length-1],n))?h(Wh(e,t)):s},s.copy=function(){return jh(s,jv(t,n,r,i,o,a,u,c,f))},s}function Xv(){var t,n,e,r,i,o=0,a=1,u=Bh,c=!1;function f(n){return isNaN(n=+n)?i:u(0===e?.5:(n=(r(n)-t)*e,c?Math.max(0,Math.min(1,n)):n))}return f.domain=function(i){return arguments.length?(t=r(o=+i[0]),n=r(a=+i[1]),e=t===n?0:1/(n-t),f):[o,a]},f.clamp=function(t){return arguments.length?(c=!!t,f):c},f.interpolator=function(t){return arguments.length?(u=t,f):u},f.unknown=function(t){return arguments.length?(i=t,f):i},function(i){return r=i,t=i(o),n=i(a),e=t===n?0:1/(n-t),f}}function Vv(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Gv(){var t=fd(Xv());return t.copy=function(){return Vv(t,Gv()).exponent(t.exponent())},Ch.apply(t,arguments)}function $v(){var t,n,e,r,i,o,a,u=0,c=.5,f=1,s=Bh,l=!1;function h(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-n)*(t<n?r:i),s(l?Math.max(0,Math.min(1,t)):t))}return h.domain=function(a){return arguments.length?(t=o(u=+a[0]),n=o(c=+a[1]),e=o(f=+a[2]),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),h):[u,c,f]},h.clamp=function(t){return arguments.length?(l=!!t,h):l},h.interpolator=function(t){return arguments.length?(s=t,h):s},h.unknown=function(t){return arguments.length?(a=t,h):a},function(a){return o=a,t=a(u),n=a(c),e=a(f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),h}}function Wv(){var t=fd($v());return t.copy=function(){return Vv(t,Wv()).exponent(t.exponent())},Ch.apply(t,arguments)}function Zv(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}var Qv=Zv("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Kv=Zv("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),Jv=Zv("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),tg=Zv("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),ng=Zv("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),eg=Zv("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),rg=Zv("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),ig=Zv("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),og=Zv("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),ag=Zv("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");function ug(t){return pe(t[t.length-1])}var cg=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Zv),fg=ug(cg),sg=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Zv),lg=ug(sg),hg=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Zv),dg=ug(hg),pg=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Zv),vg=ug(pg),gg=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Zv),yg=ug(gg),_g=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Zv),bg=ug(_g),mg=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Zv),xg=ug(mg),wg=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Zv),Mg=ug(wg),Ng=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Zv),Tg=ug(Ng),Ag=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Zv),Sg=ug(Ag),kg=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Zv),Eg=ug(kg),Cg=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Zv),Pg=ug(Cg),zg=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Zv),Rg=ug(zg),Dg=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Zv),qg=ug(Dg),Lg=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Zv),Ug=ug(Lg),Og=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Zv),Bg=ug(Og),Fg=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Zv),Yg=ug(Fg),Ig=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Zv),Hg=ug(Ig),jg=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Zv),Xg=ug(jg),Vg=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Zv),Gg=ug(Vg),$g=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Zv),Wg=ug($g),Zg=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Zv),Qg=ug(Zg),Kg=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Zv),Jg=ug(Kg),ty=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Zv),ny=ug(ty),ey=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Zv),ry=ug(ey),iy=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Zv),oy=ug(iy),ay=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Zv),uy=ug(ay);var cy=Qe(ee(300,.5,0),ee(-240,.5,1)),fy=Qe(ee(-100,.75,.35),ee(80,1.5,.8)),sy=Qe(ee(260,.75,.35),ee(80,1.5,.8)),ly=ee();var hy=_n(),dy=Math.PI/3,py=2*Math.PI/3;function vy(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var gy=vy(Zv("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),yy=vy(Zv("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),_y=vy(Zv("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),by=vy(Zv("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function my(t){return function(){return t}}var xy=Math.abs,wy=Math.atan2,My=Math.cos,Ny=Math.max,Ty=Math.min,Ay=Math.sin,Sy=Math.sqrt,ky=1e-12,Ey=Math.PI,Cy=Ey/2,Py=2*Ey;function zy(t){return t>=1?Cy:t<=-1?-Cy:Math.asin(t)}function Ry(t){return t.innerRadius}function Dy(t){return t.outerRadius}function qy(t){return t.startAngle}function Ly(t){return t.endAngle}function Uy(t){return t&&t.padAngle}function Oy(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/Sy(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,v=r+l,g=(h+p)/2,y=(d+v)/2,_=p-h,b=v-d,m=_*_+b*b,x=i-o,w=h*v-p*d,M=(b<0?-1:1)*Sy(Ny(0,x*x*m-w*w)),N=(w*b-_*M)/m,T=(-w*_-b*M)/m,A=(w*b+_*M)/m,S=(-w*_+b*M)/m,k=N-g,E=T-y,C=A-g,P=S-y;return k*k+E*E>C*C+P*P&&(N=A,T=S),{cx:N,cy:T,x01:-s,y01:-l,x11:N*(i/x-1),y11:T*(i/x-1)}}function By(t){this._context=t}function Fy(t){return new By(t)}function Yy(t){return t[0]}function Iy(t){return t[1]}function Hy(){var t=Yy,n=Iy,e=my(!0),r=null,i=Fy,o=null;function a(a){var u,c,f,s=a.length,l=!1;for(null==r&&(o=i(f=no())),u=0;u<=s;++u)!(u<s&&e(c=a[u],u,a))===l&&((l=!l)?o.lineStart():o.lineEnd()),l&&o.point(+t(c,u,a),+n(c,u,a));if(f)return o=null,f+""||null}return a.x=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),a):t},a.y=function(t){return arguments.length?(n="function"==typeof t?t:my(+t),a):n},a.defined=function(t){return arguments.length?(e="function"==typeof t?t:my(!!t),a):e},a.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),a):i},a.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),a):r},a}function jy(){var t=Yy,n=null,e=my(0),r=Iy,i=my(!0),o=null,a=Fy,u=null;function c(c){var f,s,l,h,d,p=c.length,v=!1,g=new Array(p),y=new Array(p);for(null==o&&(u=a(d=no())),f=0;f<=p;++f){if(!(f<p&&i(h=c[f],f,c))===v)if(v=!v)s=f,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),l=f-1;l>=s;--l)u.point(g[l],y[l]);u.lineEnd(),u.areaEnd()}v&&(g[f]=+t(h,f,c),y[f]=+e(h,f,c),u.point(n?+n(h,f,c):g[f],r?+r(h,f,c):y[f]))}if(d)return u=null,d+""||null}function f(){return Hy().defined(i).curve(a).context(o)}return c.x=function(e){return arguments.length?(t="function"==typeof e?e:my(+e),n=null,c):t},c.x0=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),c):t},c.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:my(+t),c):n},c.y=function(t){return arguments.length?(e="function"==typeof t?t:my(+t),r=null,c):e},c.y0=function(t){return arguments.length?(e="function"==typeof t?t:my(+t),c):e},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:my(+t),c):r},c.lineX0=c.lineY0=function(){return f().x(t).y(e)},c.lineY1=function(){return f().x(t).y(r)},c.lineX1=function(){return f().x(n).y(e)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:my(!!t),c):i},c.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),c):a},c.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),c):o},c}function Xy(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function Vy(t){return t}By.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Gy=Wy(Fy);function $y(t){this._curve=t}function Wy(t){function n(n){return new $y(t(n))}return n._curve=t,n}function Zy(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Wy(t)):n()._curve},t}function Qy(){return Zy(Hy().curve(Gy))}function Ky(){var t=jy().curve(Gy),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Zy(e())},delete t.lineX0,t.lineEndAngle=function(){return Zy(r())},delete t.lineX1,t.lineInnerRadius=function(){return Zy(i())},delete t.lineY0,t.lineOuterRadius=function(){return Zy(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Wy(t)):n()._curve},t}function Jy(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}$y.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var t_=Array.prototype.slice;function n_(t){return t.source}function e_(t){return t.target}function r_(t){var n=n_,e=e_,r=Yy,i=Iy,o=null;function a(){var a,u=t_.call(arguments),c=n.apply(this,u),f=e.apply(this,u);if(o||(o=a=no()),t(o,+r.apply(this,(u[0]=c,u)),+i.apply(this,u),+r.apply(this,(u[0]=f,u)),+i.apply(this,u)),a)return o=null,a+""||null}return a.source=function(t){return arguments.length?(n=t,a):n},a.target=function(t){return arguments.length?(e=t,a):e},a.x=function(t){return arguments.length?(r="function"==typeof t?t:my(+t),a):r},a.y=function(t){return arguments.length?(i="function"==typeof t?t:my(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a}function i_(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function o_(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function a_(t,n,e,r,i){var o=Jy(n,e),a=Jy(n,e=(e+i)/2),u=Jy(r,e),c=Jy(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],u[0],u[1],c[0],c[1])}var u_={draw:function(t,n){var e=Math.sqrt(n/Ey);t.moveTo(e,0),t.arc(0,0,e,0,Py)}},c_={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},f_=Math.sqrt(1/3),s_=2*f_,l_={draw:function(t,n){var e=Math.sqrt(n/s_),r=e*f_;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},h_=Math.sin(Ey/10)/Math.sin(7*Ey/10),d_=Math.sin(Py/10)*h_,p_=-Math.cos(Py/10)*h_,v_={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=d_*e,i=p_*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var a=Py*o/5,u=Math.cos(a),c=Math.sin(a);t.lineTo(c*e,-u*e),t.lineTo(u*r-c*i,c*r+u*i)}t.closePath()}},g_={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},y_=Math.sqrt(3),__={draw:function(t,n){var e=-Math.sqrt(n/(3*y_));t.moveTo(0,2*e),t.lineTo(-y_*e,-e),t.lineTo(y_*e,-e),t.closePath()}},b_=Math.sqrt(3)/2,m_=1/Math.sqrt(12),x_=3*(m_/2+1),w_={draw:function(t,n){var e=Math.sqrt(n/x_),r=e/2,i=e*m_,o=r,a=e*m_+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(-.5*r-b_*i,b_*r+-.5*i),t.lineTo(-.5*o-b_*a,b_*o+-.5*a),t.lineTo(-.5*u-b_*c,b_*u+-.5*c),t.lineTo(-.5*r+b_*i,-.5*i-b_*r),t.lineTo(-.5*o+b_*a,-.5*a-b_*o),t.lineTo(-.5*u+b_*c,-.5*c-b_*u),t.closePath()}},M_=[u_,c_,l_,g_,v_,__,w_];function N_(){}function T_(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function A_(t){this._context=t}function S_(t){this._context=t}function k_(t){this._context=t}function E_(t,n){this._basis=new A_(t),this._beta=n}A_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:T_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:T_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},S_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:T_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},k_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:T_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},E_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var C_=function t(n){function e(t){return 1===n?new A_(t):new E_(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function P_(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function z_(t,n){this._context=t,this._k=(1-n)/6}z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:P_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:P_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var R_=function t(n){function e(t){return new z_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function D_(t,n){this._context=t,this._k=(1-n)/6}D_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:P_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var q_=function t(n){function e(t){return new D_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function L_(t,n){this._context=t,this._k=(1-n)/6}L_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:P_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var U_=function t(n){function e(t){return new L_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function O_(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>ky){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>ky){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function B_(t,n){this._context=t,this._alpha=n}B_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:O_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var F_=function t(n){function e(t){return n?new B_(t,n):new z_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Y_(t,n){this._context=t,this._alpha=n}Y_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:O_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var I_=function t(n){function e(t){return n?new Y_(t,n):new D_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function H_(t,n){this._context=t,this._alpha=n}H_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:O_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var j_=function t(n){function e(t){return n?new H_(t,n):new L_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function X_(t){this._context=t}function V_(t){return t<0?-1:1}function G_(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(V_(o)+V_(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function $_(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function W_(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function Z_(t){this._context=t}function Q_(t){this._context=new K_(t)}function K_(t){this._context=t}function J_(t){this._context=t}function tb(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,a[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,a[n]-=e*a[n-1];for(i[r-1]=a[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)o[n]=2*t[n+1]-i[n+1];return[i,o]}function nb(t,n){this._context=t,this._t=n}function eb(t,n){if((i=t.length)>1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o<i;++o)for(r=a,a=t[n[o]],e=0;e<u;++e)a[e][1]+=a[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function rb(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function ib(t,n){return t[n]}function ob(t){var n=t.map(ab);return rb(t).sort(function(t,e){return n[t]-n[e]})}function ab(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++e<i;)(n=+t[e][1])>o&&(o=n,r=e);return r}function ub(t){var n=t.map(cb);return rb(t).sort(function(t,e){return n[t]-n[e]})}function cb(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}function fb(t){return function(){return t}}function sb(t){return t[0]}function lb(t){return t[1]}function hb(){this._=null}function db(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function pb(t,n){var e=n,r=n.R,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function vb(t,n){var e=n,r=n.L,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function gb(t){for(;t.L;)t=t.L;return t}function yb(t,n,e,r){var i=[null,null],o=Yb.push(i)-1;return i.left=t,i.right=n,e&&bb(i,t,n,e),r&&bb(i,n,t,r),Bb[t.index].halfedges.push(o),Bb[n.index].halfedges.push(o),i}function _b(t,n,e){var r=[n,e];return r.left=t,r}function bb(t,n,e,r){t[0]||t[1]?t.left===e?t[1]=r:t[0]=r:(t[0]=r,t.left=n,t.right=e)}function mb(t,n,e,r,i){var o,a=t[0],u=t[1],c=a[0],f=a[1],s=0,l=1,h=u[0]-c,d=u[1]-f;if(o=n-c,h||!(o>0)){if(o/=h,h<0){if(o<s)return;o<l&&(l=o)}else if(h>0){if(o>l)return;o>s&&(s=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>s&&(s=o)}else if(h>0){if(o<s)return;o<l&&(l=o)}if(o=e-f,d||!(o>0)){if(o/=d,d<0){if(o<s)return;o<l&&(l=o)}else if(d>0){if(o>l)return;o>s&&(s=o)}if(o=i-f,d||!(o<0)){if(o/=d,d<0){if(o>l)return;o>s&&(s=o)}else if(d>0){if(o<s)return;o<l&&(l=o)}return!(s>0||l<1)||(s>0&&(t[0]=[c+s*h,f+s*d]),l<1&&(t[1]=[c+l*h,f+l*d]),!0)}}}}}function xb(t,n,e,r,i){var o=t[1];if(o)return!0;var a,u,c=t[0],f=t.left,s=t.right,l=f[0],h=f[1],d=s[0],p=s[1],v=(l+d)/2,g=(h+p)/2;if(p===h){if(v<n||v>=r)return;if(l>d){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]<e)return}else c=[v,i];o=[v,e]}}else if(u=g-(a=(l-d)/(p-h))*v,a<-1||a>1)if(l>d){if(c){if(c[1]>=i)return}else c=[(e-u)/a,e];o=[(i-u)/a,i]}else{if(c){if(c[1]<e)return}else c=[(i-u)/a,i];o=[(e-u)/a,e]}else if(h<p){if(c){if(c[0]>=r)return}else c=[n,a*n+u];o=[r,a*r+u]}else{if(c){if(c[0]<n)return}else c=[r,a*r+u];o=[n,a*n+u]}return t[0]=c,t[1]=o,!0}function wb(t,n){var e=t.site,r=n.left,i=n.right;return e===i&&(i=r,r=e),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(e===r?(r=n[1],i=n[0]):(r=n[0],i=n[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function Mb(t,n){return n[+(n.left!==t.site)]}function Nb(t,n){return n[+(n.left===t.site)]}X_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},Z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:W_(this,this._t0,$_(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,W_(this,$_(this,e=G_(this,t,n)),e);break;default:W_(this,this._t0,e=G_(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(Q_.prototype=Object.create(Z_.prototype)).point=function(t,n){Z_.prototype.point.call(this,n,t)},K_.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},J_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=tb(t),i=tb(n),o=0,a=1;a<e;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],n[a]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},nb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}},hb.prototype={constructor:hb,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=gb(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(pb(this,e),e=(t=e).U),e.C=!1,r.C=!0,vb(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(vb(this,e),e=(t=e).U),e.C=!1,r.C=!0,pb(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,a=t.R;if(e=o?a?gb(a):o:a,i?i.L===t?i.L=e:i.R=e:this._=e,o&&a?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==a?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=a,a.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,pb(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,vb(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,pb(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,vb(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,pb(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,vb(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var Tb,Ab=[];function Sb(){db(this),this.x=this.y=this.arc=this.site=this.cy=null}function kb(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,o=e.site;if(r!==o){var a=i[0],u=i[1],c=r[0]-a,f=r[1]-u,s=o[0]-a,l=o[1]-u,h=2*(c*l-f*s);if(!(h>=-Hb)){var d=c*c+f*f,p=s*s+l*l,v=(l*d-f*p)/h,g=(c*p-s*d)/h,y=Ab.pop()||new Sb;y.arc=t,y.site=i,y.x=v+a,y.y=(y.cy=g+u)+Math.sqrt(v*v+g*g),t.circle=y;for(var _=null,b=Fb._;b;)if(y.y<b.y||y.y===b.y&&y.x<=b.x){if(!b.L){_=b.P;break}b=b.L}else{if(!b.R){_=b;break}b=b.R}Fb.insert(_,y),_||(Tb=y)}}}}function Eb(t){var n=t.circle;n&&(n.P||(Tb=n.N),Fb.remove(n),Ab.push(n),db(n),t.circle=null)}var Cb=[];function Pb(){db(this),this.edge=this.site=this.circle=null}function zb(t){var n=Cb.pop()||new Pb;return n.site=t,n}function Rb(t){Eb(t),Ob.remove(t),Cb.push(t),db(t)}function Db(t){var n=t.circle,e=n.x,r=n.cy,i=[e,r],o=t.P,a=t.N,u=[t];Rb(t);for(var c=o;c.circle&&Math.abs(e-c.circle.x)<Ib&&Math.abs(r-c.circle.cy)<Ib;)o=c.P,u.unshift(c),Rb(c),c=o;u.unshift(c),Eb(c);for(var f=a;f.circle&&Math.abs(e-f.circle.x)<Ib&&Math.abs(r-f.circle.cy)<Ib;)a=f.N,u.push(f),Rb(f),f=a;u.push(f),Eb(f);var s,l=u.length;for(s=1;s<l;++s)f=u[s],c=u[s-1],bb(f.edge,c.site,f.site,i);c=u[0],(f=u[l-1]).edge=yb(c.site,f.site,null,i),kb(c),kb(f)}function qb(t){for(var n,e,r,i,o=t[0],a=t[1],u=Ob._;u;)if((r=Lb(u,a)-o)>Ib)u=u.L;else{if(!((i=o-Ub(u,a))>Ib)){r>-Ib?(n=u.P,e=u):i>-Ib?(n=u,e=u.N):n=e=u;break}if(!u.R){n=u;break}u=u.R}!function(t){Bb[t.index]={site:t,halfedges:[]}}(t);var c=zb(t);if(Ob.insert(n,c),n||e){if(n===e)return Eb(n),e=zb(n.site),Ob.insert(c,e),c.edge=e.edge=yb(n.site,c.site),kb(n),void kb(e);if(e){Eb(n),Eb(e);var f=n.site,s=f[0],l=f[1],h=t[0]-s,d=t[1]-l,p=e.site,v=p[0]-s,g=p[1]-l,y=2*(h*g-d*v),_=h*h+d*d,b=v*v+g*g,m=[(g*_-d*b)/y+s,(h*b-v*_)/y+l];bb(e.edge,f,p,m),c.edge=yb(f,t,null,m),e.edge=yb(t,p,null,m),kb(n),kb(e)}else c.edge=yb(n.site,c.site)}}function Lb(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var a=t.P;if(!a)return-1/0;var u=(e=a.site)[0],c=e[1],f=c-n;if(!f)return u;var s=u-r,l=1/o-1/f,h=s/f;return l?(-h+Math.sqrt(h*h-2*l*(s*s/(-2*f)-c+f/2+i-o/2)))/l+r:(r+u)/2}function Ub(t,n){var e=t.N;if(e)return Lb(e,n);var r=t.site;return r[1]===n?r[0]:1/0}var Ob,Bb,Fb,Yb,Ib=1e-6,Hb=1e-12;function jb(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function Xb(t,n){return n[1]-t[1]||n[0]-t[0]}function Vb(t,n){var e,r,i,o=t.sort(Xb).pop();for(Yb=[],Bb=new Array(t.length),Ob=new hb,Fb=new hb;;)if(i=Tb,o&&(!i||o[1]<i.y||o[1]===i.y&&o[0]<i.x))o[0]===e&&o[1]===r||(qb(o),e=o[0],r=o[1]),o=t.pop();else{if(!i)break;Db(i.arc)}if(function(){for(var t,n,e,r,i=0,o=Bb.length;i<o;++i)if((t=Bb[i])&&(r=(n=t.halfedges).length)){var a=new Array(r),u=new Array(r);for(e=0;e<r;++e)a[e]=e,u[e]=wb(t,Yb[n[e]]);for(a.sort(function(t,n){return u[n]-u[t]}),e=0;e<r;++e)u[e]=n[a[e]];for(e=0;e<r;++e)n[e]=u[e]}}(),n){var a=+n[0][0],u=+n[0][1],c=+n[1][0],f=+n[1][1];!function(t,n,e,r){for(var i,o=Yb.length;o--;)xb(i=Yb[o],t,n,e,r)&&mb(i,t,n,e,r)&&(Math.abs(i[0][0]-i[1][0])>Ib||Math.abs(i[0][1]-i[1][1])>Ib)||delete Yb[o]}(a,u,c,f),function(t,n,e,r){var i,o,a,u,c,f,s,l,h,d,p,v,g=Bb.length,y=!0;for(i=0;i<g;++i)if(o=Bb[i]){for(a=o.site,u=(c=o.halfedges).length;u--;)Yb[c[u]]||c.splice(u,1);for(u=0,f=c.length;u<f;)p=(d=Nb(o,Yb[c[u]]))[0],v=d[1],l=(s=Mb(o,Yb[c[++u%f]]))[0],h=s[1],(Math.abs(p-l)>Ib||Math.abs(v-h)>Ib)&&(c.splice(u,0,Yb.push(_b(a,d,Math.abs(p-t)<Ib&&r-v>Ib?[t,Math.abs(l-t)<Ib?h:r]:Math.abs(v-r)<Ib&&e-p>Ib?[Math.abs(h-r)<Ib?l:e,r]:Math.abs(p-e)<Ib&&v-n>Ib?[e,Math.abs(l-e)<Ib?h:n]:Math.abs(v-n)<Ib&&p-t>Ib?[Math.abs(h-n)<Ib?l:t,n]:null))-1),++f);f&&(y=!1)}if(y){var _,b,m,x=1/0;for(i=0,y=null;i<g;++i)(o=Bb[i])&&(m=(_=(a=o.site)[0]-t)*_+(b=a[1]-n)*b)<x&&(x=m,y=o);if(y){var w=[t,n],M=[t,r],N=[e,r],T=[e,n];y.halfedges.push(Yb.push(_b(a=y.site,w,M))-1,Yb.push(_b(a,M,N))-1,Yb.push(_b(a,N,T))-1,Yb.push(_b(a,T,w))-1)}}for(i=0;i<g;++i)(o=Bb[i])&&(o.halfedges.length||delete Bb[i])}(a,u,c,f)}this.edges=Yb,this.cells=Bb,Ob=Fb=Yb=Bb=null}function Gb(t){return function(){return t}}function $b(t,n,e){this.target=t,this.type=n,this.transform=e}function Wb(t,n,e){this.k=t,this.x=n,this.y=e}Vb.prototype={constructor:Vb,polygons:function(){var t=this.edges;return this.cells.map(function(n){var e=n.halfedges.map(function(e){return Mb(n,t[e])});return e.data=n.site.data,e})},triangles:function(){var t=[],n=this.edges;return this.cells.forEach(function(e,r){if(o=(i=e.halfedges).length)for(var i,o,a,u=e.site,c=-1,f=n[i[o-1]],s=f.left===u?f.right:f.left;++c<o;)a=s,s=(f=n[i[c]]).left===u?f.right:f.left,a&&s&&r<a.index&&r<s.index&&jb(u,a,s)<0&&t.push([u.data,a.data,s.data])}),t},links:function(){return this.edges.filter(function(t){return t.right}).map(function(t){return{source:t.left.data,target:t.right.data}})},find:function(t,n,e){for(var r,i,o=this,a=o._found||0,u=o.cells.length;!(i=o.cells[a]);)if(++a>=u)return null;var c=t-i.site[0],f=n-i.site[1],s=c*c+f*f;do{i=o.cells[r=a],a=null,i.halfedges.forEach(function(e){var r=o.edges[e],u=r.left;if(u!==i.site&&u||(u=r.right)){var c=t-u[0],f=n-u[1],l=c*c+f*f;l<s&&(s=l,a=u.index)}})}while(null!==a);return o._found=r,null==e||s<=e*e?i.site:null}},Wb.prototype={constructor:Wb,scale:function(t){return 1===t?this:new Wb(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new Wb(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Zb=new Wb(1,0,0);function Qb(t){for(;!t.__zoom;)if(!(t=t.parentNode))return Zb;return t.__zoom}function Kb(){t.event.stopImmediatePropagation()}function Jb(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function tm(){return!t.event.ctrlKey&&!t.event.button}function nm(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function em(){return this.__zoom||Zb}function rm(){return-t.event.deltaY*(1===t.event.deltaMode?.05:t.event.deltaMode?1:.002)}function im(){return navigator.maxTouchPoints||"ontouchstart"in this}function om(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Qb.prototype=Wb.prototype,t.FormatSpecifier=Ba,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>xr&&e.name===n)return new Ur([[t]],yi,n,+r);return null},t.arc=function(){var t=Ry,n=Dy,e=my(0),r=null,i=qy,o=Ly,a=Uy,u=null;function c(){var c,f,s=+t.apply(this,arguments),l=+n.apply(this,arguments),h=i.apply(this,arguments)-Cy,d=o.apply(this,arguments)-Cy,p=xy(d-h),v=d>h;if(u||(u=c=no()),l<s&&(f=l,l=s,s=f),l>ky)if(p>Py-ky)u.moveTo(l*My(h),l*Ay(h)),u.arc(0,0,l,h,d,!v),s>ky&&(u.moveTo(s*My(d),s*Ay(d)),u.arc(0,0,s,d,h,v));else{var g,y,_=h,b=d,m=h,x=d,w=p,M=p,N=a.apply(this,arguments)/2,T=N>ky&&(r?+r.apply(this,arguments):Sy(s*s+l*l)),A=Ty(xy(l-s)/2,+e.apply(this,arguments)),S=A,k=A;if(T>ky){var E=zy(T/s*Ay(N)),C=zy(T/l*Ay(N));(w-=2*E)>ky?(m+=E*=v?1:-1,x-=E):(w=0,m=x=(h+d)/2),(M-=2*C)>ky?(_+=C*=v?1:-1,b-=C):(M=0,_=b=(h+d)/2)}var P=l*My(_),z=l*Ay(_),R=s*My(x),D=s*Ay(x);if(A>ky){var q,L=l*My(b),U=l*Ay(b),O=s*My(m),B=s*Ay(m);if(p<Ey&&(q=function(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<ky))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}(P,z,O,B,L,U,R,D))){var F=P-q[0],Y=z-q[1],I=L-q[0],H=U-q[1],j=1/Ay(function(t){return t>1?0:t<-1?Ey:Math.acos(t)}((F*I+Y*H)/(Sy(F*F+Y*Y)*Sy(I*I+H*H)))/2),X=Sy(q[0]*q[0]+q[1]*q[1]);S=Ty(A,(s-X)/(j-1)),k=Ty(A,(l-X)/(j+1))}}M>ky?k>ky?(g=Oy(O,B,P,z,l,k,v),y=Oy(L,U,R,D,l,k,v),u.moveTo(g.cx+g.x01,g.cy+g.y01),k<A?u.arc(g.cx,g.cy,k,wy(g.y01,g.x01),wy(y.y01,y.x01),!v):(u.arc(g.cx,g.cy,k,wy(g.y01,g.x01),wy(g.y11,g.x11),!v),u.arc(0,0,l,wy(g.cy+g.y11,g.cx+g.x11),wy(y.cy+y.y11,y.cx+y.x11),!v),u.arc(y.cx,y.cy,k,wy(y.y11,y.x11),wy(y.y01,y.x01),!v))):(u.moveTo(P,z),u.arc(0,0,l,_,b,!v)):u.moveTo(P,z),s>ky&&w>ky?S>ky?(g=Oy(R,D,L,U,s,-S,v),y=Oy(P,z,O,B,s,-S,v),u.lineTo(g.cx+g.x01,g.cy+g.y01),S<A?u.arc(g.cx,g.cy,S,wy(g.y01,g.x01),wy(y.y01,y.x01),!v):(u.arc(g.cx,g.cy,S,wy(g.y01,g.x01),wy(g.y11,g.x11),!v),u.arc(0,0,s,wy(g.cy+g.y11,g.cx+g.x11),wy(y.cy+y.y11,y.cx+y.x11),v),u.arc(y.cx,y.cy,S,wy(y.y11,y.x11),wy(y.y01,y.x01),!v))):u.arc(0,0,s,x,m,v):u.lineTo(R,D)}else u.moveTo(0,0);if(u.closePath(),c)return u=null,c+""||null}return c.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-Ey/2;return[My(r)*e,Ay(r)*e]},c.innerRadius=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),c):t},c.outerRadius=function(t){return arguments.length?(n="function"==typeof t?t:my(+t),c):n},c.cornerRadius=function(t){return arguments.length?(e="function"==typeof t?t:my(+t),c):e},c.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:my(+t),c):r},c.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:my(+t),c):i},c.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:my(+t),c):o},c.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:my(+t),c):a},c.context=function(t){return arguments.length?(u=null==t?null:t,c):u},c},t.area=jy,t.areaRadial=Ky,t.ascending=n,t.autoType=function(t){for(var n in t){var e,r,i=t[n].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(e=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;ra&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=e;else i=null;t[n]=i}return t},t.axisBottom=function(t){return F(D,t)},t.axisLeft=function(t){return F(q,t)},t.axisRight=function(t){return F(R,t)},t.axisTop=function(t){return F(z,t)},t.bisect=i,t.bisectLeft=o,t.bisectRight=i,t.bisector=e,t.blob=function(t,n){return fetch(t,n).then(ia)},t.brush=function(){return Yi(Ci)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.brushX=function(){return Yi(ki)},t.brushY=function(){return Yi(Ei)},t.buffer=function(t,n){return fetch(t,n).then(oa)},t.chord=function(){var t=0,n=null,e=null,r=null;function i(i){var o,a,u,c,f,s,l=i.length,h=[],d=g(l),p=[],v=[],y=v.groups=new Array(l),_=new Array(l*l);for(o=0,f=-1;++f<l;){for(a=0,s=-1;++s<l;)a+=i[f][s];h.push(a),p.push(g(l)),o+=a}for(n&&d.sort(function(t,e){return n(h[t],h[e])}),e&&p.forEach(function(t,n){t.sort(function(t,r){return e(i[n][t],i[n][r])})}),c=(o=Gi(0,Vi-t*l)/o)?t:Vi/l,a=0,f=-1;++f<l;){for(u=a,s=-1;++s<l;){var b=d[f],m=p[b][s],x=i[b][m],w=a,M=a+=x*o;_[m*l+b]={index:b,subindex:m,startAngle:w,endAngle:M,value:x}}y[b]={index:b,startAngle:u,endAngle:a,value:h[b]},a+=c}for(f=-1;++f<l;)for(s=f-1;++s<l;){var N=_[s*l+f],T=_[f*l+s];(N.value||T.value)&&v.push(N.value<T.value?{source:T,target:N}:{source:N,target:T})}return r?v.sort(r):v}return i.padAngle=function(n){return arguments.length?(t=Gi(0,n),i):t},i.sortGroups=function(t){return arguments.length?(n=t,i):n},i.sortSubgroups=function(t){return arguments.length?(e=t,i):e},i.sortChords=function(t){return arguments.length?(null==t?r=null:(r=$i(t))._=t,i):r&&r._},i},t.clientPoint=Ot,t.cluster=function(){var t=Nl,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter(function(n){var e=n.children;e?(n.x=function(t){return t.reduce(Tl,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Al,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)});var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.color=pn,t.contourDensity=function(){var t=ko,n=Eo,e=Co,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=bo(20);function l(r){var i=new Float32Array(c*f),l=new Float32Array(c*f);r.forEach(function(r,o,s){var l=+t(r,o,s)+u>>a,h=+n(r,o,s)+u>>a,d=+e(r,o,s);l>=0&&l<c&&h>=0&&h<f&&(i[l+h*c]+=d)}),Ao({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),So({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Ao({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),So({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Ao({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),So({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a);var d=s(i);if(!Array.isArray(d)){var p=T(i);d=w(0,p,d),(d=g(0,Math.floor(p/d)*d,d)).shift()}return To().thresholds(d).size([c,f])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function y(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,l}return l.x=function(n){return arguments.length?(t="function"==typeof n?n:bo(+n),l):t},l.y=function(t){return arguments.length?(n="function"==typeof t?t:bo(+t),l):n},l.weight=function(t){return arguments.length?(e="function"==typeof t?t:bo(+t),l):e},l.size=function(t){if(!arguments.length)return[r,i];var n=Math.ceil(t[0]),e=Math.ceil(t[1]);if(!(n>=0||n>=0))throw new Error("invalid size");return r=n,i=e,y()},l.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),y()},l.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?bo(yo.call(t)):bo(t),l):s},l.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},l},t.contours=To,t.create=function(t){return Rt(Z(t).call(document.documentElement))},t.creator=Z,t.cross=function(t,n,e){var r,i,o,u,c=t.length,f=n.length,s=new Array(c*f);for(null==e&&(e=a),r=o=0;r<c;++r)for(u=t[r],i=0;i<f;++i,++o)s[o]=e(u,n[i]);return s},t.csv=fa,t.csvFormat=jo,t.csvFormatBody=Xo,t.csvFormatRow=Go,t.csvFormatRows=Vo,t.csvFormatValue=$o,t.csvParse=Io,t.csvParseRows=Ho,t.cubehelix=ee,t.curveBasis=function(t){return new A_(t)},t.curveBasisClosed=function(t){return new S_(t)},t.curveBasisOpen=function(t){return new k_(t)},t.curveBundle=C_,t.curveCardinal=R_,t.curveCardinalClosed=q_,t.curveCardinalOpen=U_,t.curveCatmullRom=F_,t.curveCatmullRomClosed=I_,t.curveCatmullRomOpen=j_,t.curveLinear=Fy,t.curveLinearClosed=function(t){return new X_(t)},t.curveMonotoneX=function(t){return new Z_(t)},t.curveMonotoneY=function(t){return new Q_(t)},t.curveNatural=function(t){return new J_(t)},t.curveStep=function(t){return new nb(t,.5)},t.curveStepAfter=function(t){return new nb(t,1)},t.curveStepBefore=function(t){return new nb(t,0)},t.customEvent=kt,t.descending=function(t,n){return n<t?-1:n>t?1:n>=t?0:NaN},t.deviation=f,t.dispatch=I,t.drag=function(){var n,e,r,i,o=Gt,a=$t,u=Wt,c=Zt,f={},s=I("start","drag","end"),l=0,h=0;function d(t){t.on("mousedown.drag",p).filter(c).on("touchstart.drag",y).on("touchmove.drag",_).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(){if(!i&&o.apply(this,arguments)){var u=m("mouse",a.apply(this,arguments),Bt,this,arguments);u&&(Rt(t.event.view).on("mousemove.drag",v,!0).on("mouseup.drag",g,!0),Ht(t.event.view),Yt(),r=!1,n=t.event.clientX,e=t.event.clientY,u("start"))}}function v(){if(It(),!r){var i=t.event.clientX-n,o=t.event.clientY-e;r=i*i+o*o>h}f.mouse("drag")}function g(){Rt(t.event.view).on("mousemove.drag mouseup.drag",null),jt(t.event.view,r),It(),f.mouse("end")}function y(){if(o.apply(this,arguments)){var n,e,r=t.event.changedTouches,i=a.apply(this,arguments),u=r.length;for(n=0;n<u;++n)(e=m(r[n].identifier,i,Ft,this,arguments))&&(Yt(),e("start"))}}function _(){var n,e,r=t.event.changedTouches,i=r.length;for(n=0;n<i;++n)(e=f[r[n].identifier])&&(It(),e("drag"))}function b(){var n,e,r=t.event.changedTouches,o=r.length;for(i&&clearTimeout(i),i=setTimeout(function(){i=null},500),n=0;n<o;++n)(e=f[r[n].identifier])&&(Yt(),e("end"))}function m(n,e,r,i,o){var a,c,h,p=r(e,n),v=s.copy();if(kt(new Vt(d,"beforestart",a,n,l,p[0],p[1],0,0,v),function(){return null!=(t.event.subject=a=u.apply(i,o))&&(c=a.x-p[0]||0,h=a.y-p[1]||0,!0)}))return function t(u){var s,g=p;switch(u){case"start":f[n]=t,s=l++;break;case"end":delete f[n],--l;case"drag":p=r(e,n),s=l}kt(new Vt(d,u,a,n,s,p[0]+c,p[1]+h,p[0]-g[0],p[1]-g[1],v),v.apply,v,[u,i,o])}}return d.filter=function(t){return arguments.length?(o="function"==typeof t?t:Xt(!!t),d):o},d.container=function(t){return arguments.length?(a="function"==typeof t?t:Xt(t),d):a},d.subject=function(t){return arguments.length?(u="function"==typeof t?t:Xt(t),d):u},d.touchable=function(t){return arguments.length?(c="function"==typeof t?t:Xt(!!t),d):c},d.on=function(){var t=s.on.apply(s,arguments);return t===s?d:t},d.clickDistance=function(t){return arguments.length?(h=(t=+t)*t,d):Math.sqrt(h)},d},t.dragDisable=Ht,t.dragEnable=jt,t.dsv=function(t,n,e,r){3===arguments.length&&"function"==typeof e&&(r=e,e=void 0);var i=Fo(t);return ua(n,e).then(function(t){return i.parse(t,r)})},t.dsvFormat=Fo,t.easeBack=si,t.easeBackIn=ci,t.easeBackInOut=si,t.easeBackOut=fi,t.easeBounce=ui,t.easeBounceIn=function(t){return 1-ui(1-t)},t.easeBounceInOut=function(t){return((t*=2)<=1?1-ui(1-t):ui(t-1)+1)/2},t.easeBounceOut=ui,t.easeCircle=Zr,t.easeCircleIn=function(t){return 1-Math.sqrt(1-t*t)},t.easeCircleInOut=Zr,t.easeCircleOut=function(t){return Math.sqrt(1- --t*t)},t.easeCubic=Ir,t.easeCubicIn=function(t){return t*t*t},t.easeCubicInOut=Ir,t.easeCubicOut=function(t){return--t*t*t+1},t.easeElastic=di,t.easeElasticIn=hi,t.easeElasticInOut=pi,t.easeElasticOut=di,t.easeExp=Wr,t.easeExpIn=function(t){return Math.pow(2,10*t-10)},t.easeExpInOut=Wr,t.easeExpOut=function(t){return 1-Math.pow(2,-10*t)},t.easeLinear=function(t){return+t},t.easePoly=Xr,t.easePolyIn=Hr,t.easePolyInOut=Xr,t.easePolyOut=jr,t.easeQuad=Yr,t.easeQuadIn=function(t){return t*t},t.easeQuadInOut=Yr,t.easeQuadOut=function(t){return t*(2-t)},t.easeSin=$r,t.easeSinIn=function(t){return 1-Math.cos(t*Gr)},t.easeSinInOut=$r,t.easeSinOut=function(t){return Math.sin(t*Gr)},t.entries=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},t.extent=s,t.forceCenter=function(t,n){var e;function r(){var r,i,o=e.length,a=0,u=0;for(r=0;r<o;++r)a+=(i=e[r]).x,u+=i.y;for(a=a/o-t,u=u/o-n,r=0;r<o;++r)(i=e[r]).x-=a,i.y-=u}return null==t&&(t=0),null==n&&(n=0),r.initialize=function(t){e=t},r.x=function(n){return arguments.length?(t=+n,r):t},r.y=function(t){return arguments.length?(n=+t,r):n},r},t.forceCollide=function(t){var n,e,r=1,i=1;function o(){for(var t,o,u,c,f,s,l,h=n.length,d=0;d<i;++d)for(o=wa(n,Aa,Sa).visitAfter(a),t=0;t<h;++t)u=n[t],s=e[u.index],l=s*s,c=u.x+u.vx,f=u.y+u.vy,o.visit(p);function p(t,n,e,i,o){var a=t.data,h=t.r,d=s+h;if(!a)return n>c+d||i<c-d||e>f+d||o<f-d;if(a.index>u.index){var p=c-a.x-a.vx,v=f-a.y-a.vy,g=p*p+v*v;g<d*d&&(0===p&&(g+=(p=ya())*p),0===v&&(g+=(v=ya())*v),g=(d-(g=Math.sqrt(g)))/g*r,u.vx+=(p*=g)*(d=(h*=h)/(l+h)),u.vy+=(v*=g)*d,a.vx-=p*(d=1-d),a.vy-=v*d)}}}function a(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function u(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r<o;++r)i=n[r],e[i.index]=+t(i,r,n)}}return"function"!=typeof t&&(t=ga(null==t?1:+t)),o.initialize=function(t){n=t,u()},o.iterations=function(t){return arguments.length?(i=+t,o):i},o.strength=function(t){return arguments.length?(r=+t,o):r},o.radius=function(n){return arguments.length?(t="function"==typeof n?n:ga(+n),u(),o):t},o},t.forceLink=function(t){var n,e,r,i,o,a=ka,u=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},c=ga(30),f=1;function s(r){for(var i=0,a=t.length;i<f;++i)for(var u,c,s,l,h,d,p,v=0;v<a;++v)c=(u=t[v]).source,l=(s=u.target).x+s.vx-c.x-c.vx||ya(),h=s.y+s.vy-c.y-c.vy||ya(),l*=d=((d=Math.sqrt(l*l+h*h))-e[v])/d*r*n[v],h*=d,s.vx-=l*(p=o[v]),s.vy-=h*p,c.vx+=l*(p=1-p),c.vy+=h*p}function l(){if(r){var u,c,f=r.length,s=t.length,l=co(r,a);for(u=0,i=new Array(f);u<s;++u)(c=t[u]).index=u,"object"!=typeof c.source&&(c.source=Ea(l,c.source)),"object"!=typeof c.target&&(c.target=Ea(l,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(u=0,o=new Array(s);u<s;++u)c=t[u],o[u]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);n=new Array(s),h(),e=new Array(s),d()}}function h(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+u(t[e],e,t)}function d(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+c(t[n],n,t)}return null==t&&(t=[]),s.initialize=function(t){r=t,l()},s.links=function(n){return arguments.length?(t=n,l(),s):t},s.id=function(t){return arguments.length?(a=t,s):a},s.iterations=function(t){return arguments.length?(f=+t,s):f},s.strength=function(t){return arguments.length?(u="function"==typeof t?t:ga(+t),h(),s):u},s.distance=function(t){return arguments.length?(c="function"==typeof t?t:ga(+t),d(),s):c},s},t.forceManyBody=function(){var t,n,e,r,i=ga(-30),o=1,a=1/0,u=.81;function c(r){var i,o=t.length,a=wa(t,Ca,Pa).visitAfter(s);for(e=r,i=0;i<o;++i)n=t[i],a.visit(l)}function f(){if(t){var n,e,o=t.length;for(r=new Array(o),n=0;n<o;++n)e=t[n],r[e.index]=+i(e,n,t)}}function s(t){var n,e,i,o,a,u=0,c=0;if(t.length){for(i=o=a=0;a<4;++a)(n=t[a])&&(e=Math.abs(n.value))&&(u+=n.value,c+=e,i+=e*n.x,o+=e*n.y);t.x=i/c,t.y=o/c}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=r[n.data.index]}while(n=n.next)}t.value=u}function l(t,i,c,f){if(!t.value)return!0;var s=t.x-n.x,l=t.y-n.y,h=f-i,d=s*s+l*l;if(h*h/u<d)return d<a&&(0===s&&(d+=(s=ya())*s),0===l&&(d+=(l=ya())*l),d<o&&(d=Math.sqrt(o*d)),n.vx+=s*t.value*e/d,n.vy+=l*t.value*e/d),!0;if(!(t.length||d>=a)){(t.data!==n||t.next)&&(0===s&&(d+=(s=ya())*s),0===l&&(d+=(l=ya())*l),d<o&&(d=Math.sqrt(o*d)));do{t.data!==n&&(h=r[t.data.index]*e/d,n.vx+=s*h,n.vy+=l*h)}while(t=t.next)}}return c.initialize=function(n){t=n,f()},c.strength=function(t){return arguments.length?(i="function"==typeof t?t:ga(+t),f(),c):i},c.distanceMin=function(t){return arguments.length?(o=t*t,c):Math.sqrt(o)},c.distanceMax=function(t){return arguments.length?(a=t*t,c):Math.sqrt(a)},c.theta=function(t){return arguments.length?(u=t*t,c):Math.sqrt(u)},c},t.forceRadial=function(t,n,e){var r,i,o,a=ga(.1);function u(t){for(var a=0,u=r.length;a<u;++a){var c=r[a],f=c.x-n||1e-6,s=c.y-e||1e-6,l=Math.sqrt(f*f+s*s),h=(o[a]-l)*i[a]*t/l;c.vx+=f*h,c.vy+=s*h}}function c(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)o[n]=+t(r[n],n,r),i[n]=isNaN(o[n])?0:+a(r[n],n,r)}}return"function"!=typeof t&&(t=ga(+t)),null==n&&(n=0),null==e&&(e=0),u.initialize=function(t){r=t,c()},u.strength=function(t){return arguments.length?(a="function"==typeof t?t:ga(+t),c(),u):a},u.radius=function(n){return arguments.length?(t="function"==typeof n?n:ga(+n),c(),u):t},u.x=function(t){return arguments.length?(n=+t,u):n},u.y=function(t){return arguments.length?(e=+t,u):e},u},t.forceSimulation=function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=co(),c=hr(s),f=I("tick","end");function s(){l(),f.call("tick",n),e<r&&(c.stop(),f.call("end",n))}function l(r){var c,f,s=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(e+=(o-e)*i,u.each(function(t){t(e)}),c=0;c<s;++c)null==(f=t[c]).fx?f.x+=f.vx*=a:(f.x=f.fx,f.vx=0),null==f.fy?f.y+=f.vy*=a:(f.y=f.fy,f.vy=0);return n}function h(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=za*Math.sqrt(e),o=e*Ra;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function d(n){return n.initialize&&n.initialize(t),n}return null==t&&(t=[]),h(),n={tick:l,restart:function(){return c.restart(s),n},stop:function(){return c.stop(),n},nodes:function(e){return arguments.length?(t=e,h(),u.each(d),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(o=+t,n):o},velocityDecay:function(t){return arguments.length?(a=1-t,n):1-a},force:function(t,e){return arguments.length>1?(null==e?u.remove(t):u.set(t,d(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f<s;++f)(a=(i=n-(u=t[f]).x)*i+(o=e-u.y)*o)<r&&(c=u,r=a);return c},on:function(t,e){return arguments.length>1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=ga(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vx+=(r[o]-i.x)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=ga(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:ga(+t),a(),o):i},o.x=function(n){return arguments.length?(t="function"==typeof n?n:ga(+n),a(),o):t},o},t.forceY=function(t){var n,e,r,i=ga(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vy+=(r[o]-i.y)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=ga(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:ga(+t),a(),o):i},o.y=function(n){return arguments.length?(t="function"==typeof n?n:ga(+n),a(),o):t},o},t.formatDefaultLocale=Ga,t.formatLocale=Va,t.formatSpecifier=Oa,t.geoAlbers=el,t.geoAlbersUsa=function(){var t,n,e,r,i,o,a=el(),u=nl().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=nl().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},s.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),c.precision(t),l()):a.precision()},s.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),c.scale(t),s.translate(a.translate())):a.scale()},s.translate=function(t){if(!arguments.length)return a.translate();var n=a.scale(),o=+t[0],s=+t[1];return e=a.translate(t).clipExtent([[o-.455*n,s-.238*n],[o+.455*n,s+.238*n]]).stream(f),r=u.translate([o-.307*n,s+.201*n]).clipExtent([[o-.425*n+nu,s+.12*n+nu],[o-.214*n-nu,s+.234*n-nu]]).stream(f),i=c.translate([o-.205*n,s+.212*n]).clipExtent([[o-.214*n+nu,s+.166*n+nu],[o-.115*n-nu,s+.234*n-nu]]).stream(f),l()},s.fitExtent=function(t,n){return Is(s,t,n)},s.fitSize=function(t,n){return Hs(s,t,n)},s.fitWidth=function(t,n){return js(s,t,n)},s.fitHeight=function(t,n){return Xs(s,t,n)},s.scale(1070)},t.geoArea=function(t){return Uu.reset(),Cu(t,Ou),2*Uu},t.geoAzimuthalEqualArea=function(){return Qs(ol).scale(124.75).clipAngle(179.999)},t.geoAzimuthalEqualAreaRaw=ol,t.geoAzimuthalEquidistant=function(){return Qs(al).scale(79.4188).clipAngle(179.999)},t.geoAzimuthalEquidistantRaw=al,t.geoBounds=function(t){var n,e,r,i,o,a,u;if(Ju=Ku=-(Zu=Qu=1/0),ic=[],Cu(t,Mc),e=ic.length){for(ic.sort(zc),n=1,o=[r=ic[0]];n<e;++n)Rc(r,(i=ic[n])[0])||Rc(r,i[1])?(Pc(r[0],i[1])>Pc(r[0],r[1])&&(r[1]=i[1]),Pc(i[0],r[1])>Pc(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=Pc(r[1],i[0]))>a&&(a=u,Zu=i[0],Ku=r[1])}return ic=oc=null,Zu===1/0||Qu===1/0?[[NaN,NaN],[NaN,NaN]]:[[Zu,Qu],[Ku,Ju]]},t.geoCentroid=function(t){ac=uc=cc=fc=sc=lc=hc=dc=pc=vc=gc=0,Cu(t,Dc);var n=pc,e=vc,r=gc,i=n*n+e*e+r*r;return i<eu&&(n=lc,e=hc,r=dc,uc<nu&&(n=cc,e=fc,r=sc),(i=n*n+e*e+r*r)<eu)?[NaN,NaN]:[lu(e,n)*uu,wu(r/bu(i))*uu]},t.geoCircle=function(){var t,n,e=Xc([0,0]),r=Xc(90),i=Xc(6),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=uu,e[1]*=uu}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*cu,c=i.apply(this,arguments)*cu;return t=[],n=$c(-a[0]*cu,-a[1]*cu,0).invert,Jc(o,u,c,1),a={type:"Polygon",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e="function"==typeof t?t:Xc([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r="function"==typeof t?t:Xc(+t),a):r},a.precision=function(t){return arguments.length?(i="function"==typeof t?t:Xc(+t),a):i},a},t.geoClipAntimeridian=df,t.geoClipCircle=pf,t.geoClipExtent=function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=yf(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},t.geoClipRectangle=yf,t.geoConicConformal=function(){return Js(sl).scale(109.5).parallels([30,30])},t.geoConicConformalRaw=sl,t.geoConicEqualArea=nl,t.geoConicEqualAreaRaw=tl,t.geoConicEquidistant=function(){return Js(hl).scale(131.154).center([0,13.9389])},t.geoConicEquidistantRaw=hl,t.geoContains=function(t,n){return(t&&Cf.hasOwnProperty(t.type)?Cf[t.type]:zf)(t,n)},t.geoDistance=Ef,t.geoEqualEarth=function(){return Qs(_l).scale(177.158)},t.geoEqualEarthRaw=_l,t.geoEquirectangular=function(){return Qs(ll).scale(152.63)},t.geoEquirectangularRaw=ll,t.geoGnomonic=function(){return Qs(bl).scale(144.049).clipAngle(60)},t.geoGnomonicRaw=bl,t.geoGraticule=Ff,t.geoGraticule10=function(){return Ff()()},t.geoIdentity=function(){var t,n,e,r,i,o,a,u=1,c=0,f=0,s=1,l=1,h=0,d=null,p=1,v=1,g=Bs({point:function(t,n){var e=b([t,n]);this.stream.point(e[0],e[1])}}),y=Yf;function _(){return p=u*s,v=u*l,o=a=null,b}function b(e){var r=e[0]*p,i=e[1]*v;if(h){var o=i*t-r*n;r=r*t+i*n,i=o}return[r+c,i+f]}return b.invert=function(e){var r=e[0]-c,i=e[1]-f;if(h){var o=i*t+r*n;r=r*t-i*n,i=o}return[r/p,i/v]},b.stream=function(t){return o&&a===t?o:o=g(y(a=t))},b.postclip=function(t){return arguments.length?(y=t,d=e=r=i=null,_()):y},b.clipExtent=function(t){return arguments.length?(y=null==t?(d=e=r=i=null,Yf):yf(d=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),_()):null==d?null:[[d,e],[r,i]]},b.scale=function(t){return arguments.length?(u=+t,_()):u},b.translate=function(t){return arguments.length?(c=+t[0],f=+t[1],_()):[c,f]},b.angle=function(e){return arguments.length?(n=yu(h=e%360*cu),t=hu(h),_()):h*uu},b.reflectX=function(t){return arguments.length?(s=t?-1:1,_()):s<0},b.reflectY=function(t){return arguments.length?(l=t?-1:1,_()):l<0},b.fitExtent=function(t,n){return Is(b,t,n)},b.fitSize=function(t,n){return Hs(b,t,n)},b.fitWidth=function(t,n){return js(b,t,n)},b.fitHeight=function(t,n){return Xs(b,t,n)},b},t.geoInterpolate=function(t,n){var e=t[0]*cu,r=t[1]*cu,i=n[0]*cu,o=n[1]*cu,a=hu(r),u=yu(r),c=hu(o),f=yu(o),s=a*hu(e),l=a*yu(e),h=c*hu(i),d=c*yu(i),p=2*wu(bu(Mu(o-r)+a*c*Mu(i-e))),v=yu(p),g=p?function(t){var n=yu(t*=p)/v,e=yu(p-t)/v,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[lu(i,r)*uu,lu(o,bu(r*r+i*i))*uu]}:function(){return[e*uu,r*uu]};return g.distance=p,g},t.geoLength=Af,t.geoMercator=function(){return cl(ul).scale(961/au)},t.geoMercatorRaw=ul,t.geoNaturalEarth1=function(){return Qs(ml).scale(175.295)},t.geoNaturalEarth1Raw=ml,t.geoOrthographic=function(){return Qs(xl).scale(249.5).clipAngle(90+nu)},t.geoOrthographicRaw=xl,t.geoPath=function(t,n){var e,r,i=4.5;function o(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),Cu(t,e(r))),r.result()}return o.area=function(t){return Cu(t,e($f)),$f.result()},o.measure=function(t){return Cu(t,e(Ds)),Ds.result()},o.bounds=function(t){return Cu(t,e(rs)),rs.result()},o.centroid=function(t){return Cu(t,e(ys)),ys.result()},o.projection=function(n){return arguments.length?(e=null==n?(t=null,Yf):(t=n).stream,o):t},o.context=function(t){return arguments.length?(r=null==t?(n=null,new Us):new Ss(n=t),"function"!=typeof i&&r.pointRadius(i),o):n},o.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),o):i},o.projection(t).context(n)},t.geoProjection=Qs,t.geoProjectionMutator=Ks,t.geoRotation=Kc,t.geoStereographic=function(){return Qs(wl).scale(250).clipAngle(142)},t.geoStereographicRaw=wl,t.geoStream=Cu,t.geoTransform=function(t){return{stream:Bs(t)}},t.geoTransverseMercator=function(){var t=cl(Ml),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=Ml,t.gray=function(t,n){return new Bn(t,0,0,null==n?1:n)},t.hcl=Xn,t.hierarchy=kl,t.histogram=function(){var t=v,n=s,e=M;function r(r){var o,a,u=r.length,c=new Array(u);for(o=0;o<u;++o)c[o]=t(r[o],o,r);var f=n(c),s=f[0],l=f[1],h=e(c,s,l);Array.isArray(h)||(h=w(s,l,h),h=g(Math.ceil(s/h)*h,l,h));for(var d=h.length;h[0]<=s;)h.shift(),--d;for(;h[d-1]>l;)h.pop(),--d;var p,v=new Array(d+1);for(o=0;o<=d;++o)(p=v[o]=[]).x0=o>0?h[o-1]:s,p.x1=o<d?h[o]:l;for(o=0;o<u;++o)s<=(a=c[o])&&a<=l&&v[i(h,a,0,d)].push(r[o]);return v}return r.value=function(n){return arguments.length?(t="function"==typeof n?n:p(n),r):t},r.domain=function(t){return arguments.length?(n="function"==typeof t?t:p([t[0],t[1]]),r):n},r.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?p(h.call(t)):p(t),r):e},r},t.hsl=Tn,t.html=pa,t.image=function(t,n){return new Promise(function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t})},t.interpolate=Te,t.interpolateArray=function(t,n){return(ye(n)?ge:_e)(t,n)},t.interpolateBasis=oe,t.interpolateBasisClosed=ae,t.interpolateBlues=Qg,t.interpolateBrBG=fg,t.interpolateBuGn=Sg,t.interpolateBuPu=Eg,t.interpolateCividis=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},t.interpolateCool=sy,t.interpolateCubehelix=Ze,t.interpolateCubehelixDefault=cy,t.interpolateCubehelixLong=Qe,t.interpolateDate=be,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateGnBu=Pg,t.interpolateGreens=Jg,t.interpolateGreys=ny,t.interpolateHcl=Ge,t.interpolateHclLong=$e,t.interpolateHsl=je,t.interpolateHslLong=Xe,t.interpolateHue=function(t,n){var e=fe(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateInferno=_y,t.interpolateLab=function(t,n){var e=le((t=On(t)).l,(n=On(n)).l),r=le(t.a,n.a),i=le(t.b,n.b),o=le(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateMagma=yy,t.interpolateNumber=me,t.interpolateNumberArray=ge,t.interpolateObject=xe,t.interpolateOrRd=Rg,t.interpolateOranges=uy,t.interpolatePRGn=lg,t.interpolatePiYG=dg,t.interpolatePlasma=by,t.interpolatePuBu=Ug,t.interpolatePuBuGn=qg,t.interpolatePuOr=vg,t.interpolatePuRd=Bg,t.interpolatePurples=ry,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return ly.h=360*t-100,ly.s=1.5-1.5*n,ly.l=.8-.9*n,ly+""},t.interpolateRdBu=yg,t.interpolateRdGy=bg,t.interpolateRdPu=Yg,t.interpolateRdYlBu=xg,t.interpolateRdYlGn=Mg,t.interpolateReds=oy,t.interpolateRgb=he,t.interpolateRgbBasis=pe,t.interpolateRgbBasisClosed=ve,t.interpolateRound=Ae,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,hy.r=255*(n=Math.sin(t))*n,hy.g=255*(n=Math.sin(t+dy))*n,hy.b=255*(n=Math.sin(t+py))*n,hy+""},t.interpolateSpectral=Tg,t.interpolateString=Ne,t.interpolateTransformCss=qe,t.interpolateTransformSvg=Le,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=gy,t.interpolateWarm=fy,t.interpolateYlGn=Xg,t.interpolateYlGnBu=Hg,t.interpolateYlOrBr=Gg,t.interpolateYlOrRd=Wg,t.interpolateZoom=Ie,t.interrupt=Pr,t.interval=function(t,n,e){var r=new lr,i=n;return null==n?(r.restart(t,n,e),r):(n=+n,e=null==e?fr():+e,r.restart(function o(a){a+=i,r.restart(o,i+=n,e),t(a)},n,e),r)},t.isoFormat=Rv,t.isoParse=Dv,t.json=function(t,n){return fetch(t,n).then(la)},t.keys=function(t){var n=[];for(var e in t)n.push(e);return n},t.lab=On,t.lch=function(t,n,e,r){return 1===arguments.length?jn(t):new Vn(e,n,t,null==r?1:r)},t.line=Hy,t.lineRadial=Qy,t.linkHorizontal=function(){return r_(i_)},t.linkRadial=function(){var t=r_(a_);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return r_(o_)},t.local=qt,t.map=co,t.matcher=nt,t.max=T,t.mean=function(t,n){var e,r=t.length,i=r,o=-1,a=0;if(null==n)for(;++o<r;)isNaN(e=u(t[o]))?--i:a+=e;else for(;++o<r;)isNaN(e=u(n(t[o],o,t)))?--i:a+=e;if(i)return a/i},t.median=function(t,e){var r,i=t.length,o=-1,a=[];if(null==e)for(;++o<i;)isNaN(r=u(t[o]))||a.push(r);else for(;++o<i;)isNaN(r=u(e(t[o],o,t)))||a.push(r);return N(a.sort(n),.5)},t.merge=A,t.min=S,t.mouse=Bt,t.namespace=W,t.namespaces=$,t.nest=function(){var t,n,e,r=[],i=[];function o(e,i,a,u){if(i>=r.length)return null!=t&&e.sort(t),null!=n?n(e):e;for(var c,f,s,l=-1,h=e.length,d=r[i++],p=co(),v=a();++l<h;)(s=p.get(c=d(f=e[l])+""))?s.push(f):p.set(c,[f]);return p.each(function(t,n){u(v,n,o(t,i,a,u))}),v}return e={object:function(t){return o(t,0,fo,so)},map:function(t){return o(t,0,lo,ho)},entries:function(t){return function t(e,o){if(++o>r.length)return e;var a,u=i[o-1];return null!=n&&o>=r.length?a=e.entries():(a=[],e.each(function(n,e){a.push({key:e,values:t(n,o)})})),null!=u?a.sort(function(t,n){return u(t.key,n.key)}):a}(o(t,0,lo,ho),0)},key:function(t){return r.push(t),e},sortKeys:function(t){return i[r.length-1]=t,e},sortValues:function(n){return t=n,e},rollup:function(t){return n=t,e}}},t.now=fr,t.pack=function(){var t=null,n=1,e=1,r=Wl;function i(i){return i.x=n/2,i.y=e/2,t?i.eachBefore(Kl(t)).eachAfter(Jl(r,.5)).eachBefore(th(1)):i.eachBefore(Kl(Ql)).eachAfter(Jl(Wl,1)).eachAfter(Jl(r,i.r/Math.min(n,e))).eachBefore(th(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=Gl(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:Zl(+t),i):r},i},t.packEnclose=Dl,t.packSiblings=function(t){return Vl(t),t},t.pairs=function(t,n){null==n&&(n=a);for(var e=0,r=t.length-1,i=t[0],o=new Array(r<0?0:r);e<r;)o[e]=n(i,i=t[++e]);return o},t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&eh(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(n,o)),r&&i.eachBefore(nh),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},t.path=no,t.permute=function(t,n){for(var e=n.length,r=new Array(e);e--;)r[e]=t[n[e]];return r},t.pie=function(){var t=Vy,n=Xy,e=null,r=my(0),i=my(Py),o=my(0);function a(a){var u,c,f,s,l,h=a.length,d=0,p=new Array(h),v=new Array(h),g=+r.apply(this,arguments),y=Math.min(Py,Math.max(-Py,i.apply(this,arguments)-g)),_=Math.min(Math.abs(y)/h,o.apply(this,arguments)),b=_*(y<0?-1:1);for(u=0;u<h;++u)(l=v[p[u]=u]=+t(a[u],u,a))>0&&(d+=l);for(null!=n?p.sort(function(t,e){return n(v[t],v[e])}):null!=e&&p.sort(function(t,n){return e(a[t],a[n])}),u=0,f=d?(y-h*b)/d:0;u<h;++u,g=s)c=p[u],s=g+((l=v[c])>0?l*f:0)+b,v[c]={data:a[c],index:u,value:l,startAngle:g,endAngle:s,padAngle:_};return v}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:my(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:my(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:my(+t),a):o},a},t.piecewise=function(t,n){for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e<r;)o[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[n](t-n)}},t.pointRadial=Jy,t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++e<r;)n=i,i=t[e],o+=n[1]*i[0]-n[0]*i[1];return o/2},t.polygonCentroid=function(t){for(var n,e,r=-1,i=t.length,o=0,a=0,u=t[i-1],c=0;++r<i;)n=u,u=t[r],c+=e=n[0]*u[1]-u[0]*n[1],o+=(n[0]+u[0])*e,a+=(n[1]+u[1])*e;return[o/(c*=3),a/c]},t.polygonContains=function(t,n){for(var e,r,i=t.length,o=t[i-1],a=n[0],u=n[1],c=o[0],f=o[1],s=!1,l=0;l<i;++l)e=(o=t[l])[0],(r=o[1])>u!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort(mh),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=xh(r),a=xh(i),u=a[0]===o[0],c=a[a.length-1]===o[o.length-1],f=[];for(n=o.length-1;n>=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n<a.length-c;++n)f.push(t[r[a[n]][2]]);return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r<i;)n=a,e=u,n-=a=(o=t[r])[0],e-=u=o[1],c+=Math.sqrt(n*n+e*e);return c},t.precisionFixed=$a,t.precisionPrefix=Wa,t.precisionRound=Za,t.quadtree=wa,t.quantile=N,t.quantize=function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},t.radialArea=Ky,t.radialLine=Qy,t.randomBates=Sh,t.randomExponential=kh,t.randomIrwinHall=Ah,t.randomLogNormal=Th,t.randomNormal=Nh,t.randomUniform=Mh,t.range=g,t.rgb=_n,t.ribbon=function(){var t=eo,n=ro,e=io,r=oo,i=ao,o=null;function a(){var a,u=Wi.call(arguments),c=t.apply(this,u),f=n.apply(this,u),s=+e.apply(this,(u[0]=c,u)),l=r.apply(this,u)-Xi,h=i.apply(this,u)-Xi,d=s*Ii(l),p=s*Hi(l),v=+e.apply(this,(u[0]=f,u)),g=r.apply(this,u)-Xi,y=i.apply(this,u)-Xi;if(o||(o=a=no()),o.moveTo(d,p),o.arc(0,0,s,l,h),l===g&&h===y||(o.quadraticCurveTo(0,0,v*Ii(g),v*Hi(g)),o.arc(0,0,v,g,y)),o.quadraticCurveTo(0,0,d,p),o.closePath(),a)return o=null,a+""||null}return a.radius=function(t){return arguments.length?(e="function"==typeof t?t:Zi(+t),a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Zi(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Zi(+t),a):i},a.source=function(n){return arguments.length?(t=n,a):t},a.target=function(t){return arguments.length?(n=t,a):n},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a},t.scaleBand=Lh,t.scaleDiverging=function t(){var n=$h($v()(Bh));return n.copy=function(){return Vv(n,t())},Ch.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=ed($v()).domain([.1,1,10]);return n.copy=function(){return Vv(n,t()).base(n.base())},Ch.apply(n,arguments)},t.scaleDivergingPow=Wv,t.scaleDivergingSqrt=function(){return Wv.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=od($v());return n.copy=function(){return Vv(n,t()).constant(n.constant())},Ch.apply(n,arguments)},t.scaleIdentity=function t(n){var e;function r(t){return isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=zh.call(t,Uh),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?zh.call(n,Uh):[0,1],$h(r)},t.scaleImplicit=Dh,t.scaleLinear=function t(){var n=Vh(Bh,Bh);return n.copy=function(){return jh(n,t())},Eh.apply(n,arguments),$h(n)},t.scaleLog=function t(){var n=ed(Xh()).domain([1,10]);return n.copy=function(){return jh(n,t()).base(n.base())},Eh.apply(n,arguments),n},t.scaleOrdinal=qh,t.scalePoint=function(){return function t(n){var e=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,delete n.paddingOuter,n.copy=function(){return t(e())},n}(Lh.apply(null,arguments).paddingInner(1))},t.scalePow=sd,t.scaleQuantile=function t(){var e,r=[],o=[],a=[];function u(){var t=0,n=Math.max(1,o.length);for(a=new Array(n-1);++t<n;)a[t-1]=N(r,t/n);return c}function c(t){return isNaN(t=+t)?e:o[i(a,t)]}return c.invertExtent=function(t){var n=o.indexOf(t);return n<0?[NaN,NaN]:[n>0?a[n-1]:r[0],n<a.length?a[n]:r[r.length-1]]},c.domain=function(t){if(!arguments.length)return r.slice();r=[];for(var e,i=0,o=t.length;i<o;++i)null==(e=t[i])||isNaN(e=+e)||r.push(e);return r.sort(n),u()},c.range=function(t){return arguments.length?(o=Rh.call(t),u()):o.slice()},c.unknown=function(t){return arguments.length?(e=t,c):e},c.quantiles=function(){return a.slice()},c.copy=function(){return t().domain(r).range(o).unknown(e)},Eh.apply(c,arguments)},t.scaleQuantize=function t(){var n,e=0,r=1,o=1,a=[.5],u=[0,1];function c(t){return t<=t?u[i(a,t,0,o)]:n}function f(){var t=-1;for(a=new Array(o);++t<o;)a[t]=((t+1)*r-(t-o)*e)/(o+1);return c}return c.domain=function(t){return arguments.length?(e=+t[0],r=+t[1],f()):[e,r]},c.range=function(t){return arguments.length?(o=(u=Rh.call(t)).length-1,f()):u.slice()},c.invertExtent=function(t){var n=u.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,a[0]]:n>=o?[a[o-1],r]:[a[n-1],a[n]]},c.unknown=function(t){return arguments.length?(n=t,c):c},c.thresholds=function(){return a.slice()},c.copy=function(){return t().domain([e,r]).range(u).unknown(n)},Eh.apply($h(c),arguments)},t.scaleSequential=function t(){var n=$h(Xv()(Bh));return n.copy=function(){return Vv(n,t())},Ch.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=ed(Xv()).domain([1,10]);return n.copy=function(){return Vv(n,t()).base(n.base())},Ch.apply(n,arguments)},t.scaleSequentialPow=Gv,t.scaleSequentialQuantile=function t(){var e=[],r=Bh;function o(t){if(!isNaN(t=+t))return r((i(e,t)-1)/(e.length-1))}return o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var r,i=0,a=t.length;i<a;++i)null==(r=t[i])||isNaN(r=+r)||e.push(r);return e.sort(n),o},o.interpolator=function(t){return arguments.length?(r=t,o):r},o.copy=function(){return t(r).domain(e)},Ch.apply(o,arguments)},t.scaleSequentialSqrt=function(){return Gv.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=od(Xv());return n.copy=function(){return Vv(n,t()).constant(n.constant())},Ch.apply(n,arguments)},t.scaleSqrt=function(){return sd.apply(null,arguments).exponent(.5)},t.scaleSymlog=function t(){var n=od(Xh());return n.copy=function(){return jh(n,t()).constant(n.constant())},Eh.apply(n,arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],o=1;function a(t){return t<=t?r[i(e,t,0,o)]:n}return a.domain=function(t){return arguments.length?(e=Rh.call(t),o=Math.min(e.length,r.length-1),a):e.slice()},a.range=function(t){return arguments.length?(r=Rh.call(t),o=Math.min(e.length,r.length-1),a):r.slice()},a.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},a.unknown=function(t){return arguments.length?(n=t,a):n},a.copy=function(){return t().domain(e).range(r).unknown(n)},Eh.apply(a,arguments)},t.scaleTime=function(){return Eh.apply(jv(Hd,Yd,Sd,Nd,wd,md,_d,pd,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return Eh.apply(jv(pp,hp,Kd,Wd,Gd,Xd,_d,pd,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scan=function(t,e){if(r=t.length){var r,i,o=0,a=0,u=t[a];for(null==e&&(e=n);++o<r;)(e(i=t[o],u)<0||0!==e(u,u))&&(u=i,a=o);return 0===e(u,u)?a:void 0}},t.schemeAccent=Kv,t.schemeBlues=Zg,t.schemeBrBG=cg,t.schemeBuGn=Ag,t.schemeBuPu=kg,t.schemeCategory10=Qv,t.schemeDark2=Jv,t.schemeGnBu=Cg,t.schemeGreens=Kg,t.schemeGreys=ty,t.schemeOrRd=zg,t.schemeOranges=ay,t.schemePRGn=sg,t.schemePaired=tg,t.schemePastel1=ng,t.schemePastel2=eg,t.schemePiYG=hg,t.schemePuBu=Lg,t.schemePuBuGn=Dg,t.schemePuOr=pg,t.schemePuRd=Og,t.schemePurples=ey,t.schemeRdBu=gg,t.schemeRdGy=_g,t.schemeRdPu=Fg,t.schemeRdYlBu=mg,t.schemeRdYlGn=wg,t.schemeReds=iy,t.schemeSet1=rg,t.schemeSet2=ig,t.schemeSet3=og,t.schemeSpectral=Ng,t.schemeTableau10=ag,t.schemeYlGn=jg,t.schemeYlGnBu=Ig,t.schemeYlOrBr=Vg,t.schemeYlOrRd=$g,t.select=Rt,t.selectAll=function(t){return"string"==typeof t?new Pt([document.querySelectorAll(t)],[document.documentElement]):new Pt([null==t?[]:t],Ct)},t.selection=zt,t.selector=K,t.selectorAll=tt,t.set=go,t.shuffle=function(t,n,e){for(var r,i,o=(null==e?t.length:e)-(n=null==n?0:+n);o;)i=Math.random()*o--|0,r=t[o+n],t[o+n]=t[i+n],t[i+n]=r;return t},t.stack=function(){var t=my([]),n=rb,e=eb,r=ib;function i(i){var o,a,u=t.apply(this,arguments),c=i.length,f=u.length,s=new Array(f);for(o=0;o<f;++o){for(var l,h=u[o],d=s[o]=new Array(c),p=0;p<c;++p)d[p]=l=[0,+r(i[p],h,p,i)],l.data=i[p];d.key=h}for(o=0,a=n(s);o<f;++o)s[a[o]].index=o;return e(s,a),s}return i.keys=function(n){return arguments.length?(t="function"==typeof n?n:my(t_.call(n)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:my(+t),i):r},i.order=function(t){return arguments.length?(n=null==t?rb:"function"==typeof t?t:my(t_.call(t)),i):n},i.offset=function(t){return arguments.length?(e=null==t?eb:t,i):e},i},t.stackOffsetDiverging=function(t,n){if((u=t.length)>0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c<f;++c)for(o=a=0,e=0;e<u;++e)(i=(r=t[n[e]][c])[1]-r[0])>0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o<a;++o){for(i=e=0;e<r;++e)i+=t[e][o][1]||0;if(i)for(e=0;e<r;++e)t[e][o][1]/=i}eb(t,n)}},t.stackOffsetNone=eb,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r<o;++r){for(var a=0,u=0;a<e;++a)u+=t[a][r][1]||0;i[r][1]+=i[r][0]=-u/2}eb(t,n)}},t.stackOffsetWiggle=function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a<r;++a){for(var u=0,c=0,f=0;u<i;++u){for(var s=t[n[u]],l=s[a][1]||0,h=(l-(s[a-1][1]||0))/2,d=0;d<u;++d){var p=t[n[d]];h+=(p[a][1]||0)-(p[a-1][1]||0)}c+=l,f+=h*l}e[a-1][1]+=e[a-1][0]=o,c&&(o-=f/c)}e[a-1][1]+=e[a-1][0]=o,eb(t,n)}},t.stackOrderAppearance=ob,t.stackOrderAscending=ub,t.stackOrderDescending=function(t){return ub(t).reverse()},t.stackOrderInsideOut=function(t){var n,e,r=t.length,i=t.map(cb),o=ob(t),a=0,u=0,c=[],f=[];for(n=0;n<r;++n)e=o[n],a<u?(a+=i[e],c.push(e)):(u+=i[e],f.push(e));return f.reverse().concat(c)},t.stackOrderNone=rb,t.stackOrderReverse=function(t){return rb(t).reverse()},t.stratify=function(){var t=ah,n=uh;function e(e){var r,i,o,a,u,c,f,s=e.length,l=new Array(s),h={};for(i=0;i<s;++i)r=e[i],u=l[i]=new zl(r),null!=(c=t(r,i,e))&&(c+="")&&(h[f=rh+(u.id=c)]=f in h?oh:u);for(i=0;i<s;++i)if(u=l[i],null!=(c=n(e[i],i,e))&&(c+="")){if(!(a=h[rh+c]))throw new Error("missing: "+c);if(a===oh)throw new Error("ambiguous: "+c);a.children?a.children.push(u):a.children=[u],u.parent=a}else{if(o)throw new Error("multiple roots");o=u}if(!o)throw new Error("no root");if(o.parent=ih,o.eachBefore(function(t){t.depth=t.parent.depth+1,--s}).eachBefore(Pl),o.parent=null,s>0)throw new Error("cycle");return o}return e.id=function(n){return arguments.length?(t=$l(n),e):t},e.parentId=function(t){return arguments.length?(n=$l(t),e):n},e},t.style=ft,t.sum=function(t,n){var e,r=t.length,i=-1,o=0;if(null==n)for(;++i<r;)(e=+t[i])&&(o+=e);else for(;++i<r;)(e=+n(t[i],i,t))&&(o+=e);return o},t.svg=va,t.symbol=function(){var t=my(u_),n=my(64),e=null;function r(){var r;if(e||(e=r=no()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),r)return e=null,r+""||null}return r.type=function(n){return arguments.length?(t="function"==typeof n?n:my(n),r):t},r.size=function(t){return arguments.length?(n="function"==typeof t?t:my(+t),r):n},r.context=function(t){return arguments.length?(e=null==t?null:t,r):e},r},t.symbolCircle=u_,t.symbolCross=c_,t.symbolDiamond=l_,t.symbolSquare=g_,t.symbolStar=v_,t.symbolTriangle=__,t.symbolWye=w_,t.symbols=M_,t.text=ua,t.thresholdFreedmanDiaconis=function(t,e,r){return t=d.call(t,u).sort(n),Math.ceil((r-e)/(2*(N(t,.75)-N(t,.25))*Math.pow(t.length,-1/3)))},t.thresholdScott=function(t,n,e){return Math.ceil((e-n)/(3.5*f(t)*Math.pow(t.length,-1/3)))},t.thresholdSturges=M,t.tickFormat=Gh,t.tickIncrement=x,t.tickStep=w,t.ticks=m,t.timeDay=Nd,t.timeDays=Td,t.timeFormatDefaultLocale=zv,t.timeFormatLocale=bp,t.timeFriday=zd,t.timeFridays=Bd,t.timeHour=wd,t.timeHours=Md,t.timeInterval=dd,t.timeMillisecond=pd,t.timeMilliseconds=vd,t.timeMinute=md,t.timeMinutes=xd,t.timeMonday=kd,t.timeMondays=qd,t.timeMonth=Yd,t.timeMonths=Id,t.timeSaturday=Rd,t.timeSaturdays=Fd,t.timeSecond=_d,t.timeSeconds=bd,t.timeSunday=Sd,t.timeSundays=Dd,t.timeThursday=Pd,t.timeThursdays=Od,t.timeTuesday=Ed,t.timeTuesdays=Ld,t.timeWednesday=Cd,t.timeWednesdays=Ud,t.timeWeek=Sd,t.timeWeeks=Dd,t.timeYear=Hd,t.timeYears=jd,t.timeout=yr,t.timer=hr,t.timerFlush=dr,t.touch=Ft,t.touches=function(t,n){null==n&&(n=Ut().touches);for(var e=0,r=n?n.length:0,i=new Array(r);e<r;++e)i[e]=Ot(t,n[e]);return i},t.transition=Or,t.transpose=k,t.tree=function(){var t=ch,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new dh(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new dh(r[i],i)),e.parent=n;return(a.parent=new dh(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore(function(t){t.x<f.x&&(f=t),t.x>s.x&&(s=t),t.depth>l.depth&&(l=t)});var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),v=e/(l.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*v})}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=sh(u),o=fh(o),u&&o;)c=fh(c),(a=sh(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(lh(hh(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!sh(a)&&(a.t=u,a.m+=l-s),o&&!fh(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=yh,n=!1,e=1,r=1,i=[0],o=Wl,a=Wl,u=Wl,c=Wl,f=Wl;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(nh),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l<r&&(r=l=(r+l)/2),h<s&&(s=h=(s+h)/2),n.x0=r,n.y0=s,n.x1=l,n.y1=h,n.children&&(e=i[n.depth+1]=o(n)/2,r+=f(n)-e,s+=a(n)-e,(l-=u(n)-e)<r&&(r=l=(r+l)/2),(h-=c(n)-e)<s&&(s=h=(s+h)/2),t(n,r,s,l,h))}return s.round=function(t){return arguments.length?(n=!!t,s):n},s.size=function(t){return arguments.length?(e=+t[0],r=+t[1],s):[e,r]},s.tile=function(n){return arguments.length?(t=$l(n),s):t},s.padding=function(t){return arguments.length?s.paddingInner(t).paddingOuter(t):s.paddingInner()},s.paddingInner=function(t){return arguments.length?(o="function"==typeof t?t:Zl(+t),s):o},s.paddingOuter=function(t){return arguments.length?s.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):s.paddingTop()},s.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:Zl(+t),s):a},s.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:Zl(+t),s):u},s.paddingBottom=function(t){return arguments.length?(c="function"==typeof t?t:Zl(+t),s):c},s.paddingLeft=function(t){return arguments.length?(f="function"==typeof t?t:Zl(+t),s):f},s},t.treemapBinary=function(t,n,e,r,i){var o,a,u=t.children,c=u.length,f=new Array(c+1);for(f[0]=a=o=0;o<c;++o)f[o+1]=a+=u[o].value;!function t(n,e,r,i,o,a,c){if(n>=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}for(var l=f[n],h=r/2+l,d=n+1,p=e-1;d<p;){var v=d+p>>>1;f[v]<h?d=v+1:p=v}h-f[d-1]<f[d]-h&&n+1<d&&--d;var g=f[d]-l,y=r-g;if(a-i>c-o){var _=(i*y+a*g)/r;t(n,d,g,i,o,_,c),t(d,e,y,_,o,a,c)}else{var b=(o*y+c*g)/r;t(n,d,g,i,o,a,b),t(d,e,y,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=eh,t.treemapResquarify=_h,t.treemapSlice=ph,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?ph:eh)(t,n,e,r,i)},t.treemapSquarify=yh,t.tsv=sa,t.tsvFormat=Ko,t.tsvFormatBody=Jo,t.tsvFormatRow=na,t.tsvFormatRows=ta,t.tsvFormatValue=ea,t.tsvParse=Zo,t.tsvParseRows=Qo,t.utcDay=Wd,t.utcDays=Zd,t.utcFriday=rp,t.utcFridays=sp,t.utcHour=Gd,t.utcHours=$d,t.utcMillisecond=pd,t.utcMilliseconds=vd,t.utcMinute=Xd,t.utcMinutes=Vd,t.utcMonday=Jd,t.utcMondays=ap,t.utcMonth=hp,t.utcMonths=dp,t.utcSaturday=ip,t.utcSaturdays=lp,t.utcSecond=_d,t.utcSeconds=bd,t.utcSunday=Kd,t.utcSundays=op,t.utcThursday=ep,t.utcThursdays=fp,t.utcTuesday=tp,t.utcTuesdays=up,t.utcWednesday=np,t.utcWednesdays=cp,t.utcWeek=Kd,t.utcWeeks=op,t.utcYear=pp,t.utcYears=vp,t.values=function(t){var n=[];for(var e in t)n.push(t[e]);return n},t.variance=c,t.version="5.16.0",t.voronoi=function(){var t=sb,n=lb,e=null;function r(r){return new Vb(r.map(function(e,i){var o=[Math.round(t(e,i,r)/Ib)*Ib,Math.round(n(e,i,r)/Ib)*Ib];return o.index=i,o.data=e,o}),e)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(n){return arguments.length?(t="function"==typeof n?n:fb(+n),r):t},r.y=function(t){return arguments.length?(n="function"==typeof t?t:fb(+t),r):n},r.extent=function(t){return arguments.length?(e=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):e&&[[e[0][0],e[0][1]],[e[1][0],e[1][1]]]},r.size=function(t){return arguments.length?(e=null==t?null:[[0,0],[+t[0],+t[1]]],r):e&&[e[1][0]-e[0][0],e[1][1]-e[0][1]]},r},t.window=ct,t.xml=da,t.zip=function(){return k(arguments)},t.zoom=function(){var n,e,r=tm,i=nm,o=om,a=rm,u=im,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=Ie,h=I("start","zoom","end"),d=500,p=150,v=0;function g(t){t.property("__zoom",em).on("wheel.zoom",M).on("mousedown.zoom",N).on("dblclick.zoom",T).filter(u).on("touchstart.zoom",A).on("touchmove.zoom",S).on("touchend.zoom touchcancel.zoom",k).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new Wb(n,t.x,t.y)}function _(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new Wb(t.k,r,i)}function b(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,n,e){t.on("start.zoom",function(){x(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).end()}).tween("zoom",function(){var t=this,r=arguments,o=x(t,r),a=i.apply(t,r),u=null==e?b(a):"function"==typeof e?e.apply(t,r):e,c=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),f=t.__zoom,s="function"==typeof n?n.apply(t,r):n,h=l(f.invert(u).concat(c/f.k),s.invert(u).concat(c/s.k));return function(t){if(1===t)t=s;else{var n=h(t),e=c/n[2];t=new Wb(e,u[0]-n[0]*e,u[1]-n[1]*e)}o.zoom(null,t)}})}function x(t,n,e){return!e&&t.__zooming||new w(t,n)}function w(t,n){this.that=t,this.args=n,this.active=0,this.extent=i.apply(t,n),this.taps=0}function M(){if(r.apply(this,arguments)){var t=x(this,arguments),n=this.__zoom,e=Math.max(c[0],Math.min(c[1],n.k*Math.pow(2,a.apply(this,arguments)))),i=Bt(this);if(t.wheel)t.mouse[0][0]===i[0]&&t.mouse[0][1]===i[1]||(t.mouse[1]=n.invert(t.mouse[0]=i)),clearTimeout(t.wheel);else{if(n.k===e)return;t.mouse=[i,n.invert(i)],Pr(this),t.start()}Jb(),t.wheel=setTimeout(function(){t.wheel=null,t.end()},p),t.zoom("mouse",o(_(y(n,e),t.mouse[0],t.mouse[1]),t.extent,f))}}function N(){if(!e&&r.apply(this,arguments)){var n=x(this,arguments,!0),i=Rt(t.event.view).on("mousemove.zoom",function(){if(Jb(),!n.moved){var e=t.event.clientX-u,r=t.event.clientY-c;n.moved=e*e+r*r>v}n.zoom("mouse",o(_(n.that.__zoom,n.mouse[0]=Bt(n.that),n.mouse[1]),n.extent,f))},!0).on("mouseup.zoom",function(){i.on("mousemove.zoom mouseup.zoom",null),jt(t.event.view,n.moved),Jb(),n.end()},!0),a=Bt(this),u=t.event.clientX,c=t.event.clientY;Ht(t.event.view),Kb(),n.mouse=[a,this.__zoom.invert(a)],Pr(this),n.start()}}function T(){if(r.apply(this,arguments)){var n=this.__zoom,e=Bt(this),a=n.invert(e),u=n.k*(t.event.shiftKey?.5:2),c=o(_(y(n,u),e,a),i.apply(this,arguments),f);Jb(),s>0?Rt(this).transition().duration(s).call(m,c,e):Rt(this).call(g.transform,c)}}function A(){if(r.apply(this,arguments)){var e,i,o,a,u=t.event.touches,c=u.length,f=x(this,arguments,t.event.changedTouches.length===c);for(Kb(),i=0;i<c;++i)a=[a=Ft(this,u,(o=u[i]).identifier),this.__zoom.invert(a),o.identifier],f.touch0?f.touch1||f.touch0[2]===a[2]||(f.touch1=a,f.taps=0):(f.touch0=a,e=!0,f.taps=1+!!n);n&&(n=clearTimeout(n)),e&&(f.taps<2&&(n=setTimeout(function(){n=null},d)),Pr(this),f.start())}}function S(){if(this.__zooming){var e,r,i,a,u=x(this,arguments),c=t.event.changedTouches,s=c.length;for(Jb(),n&&(n=clearTimeout(n)),u.taps=0,e=0;e<s;++e)i=Ft(this,c,(r=c[e]).identifier),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var l=u.touch0[0],h=u.touch0[1],d=u.touch1[0],p=u.touch1[1],v=(v=d[0]-l[0])*v+(v=d[1]-l[1])*v,g=(g=p[0]-h[0])*g+(g=p[1]-h[1])*g;r=y(r,Math.sqrt(v/g)),i=[(l[0]+d[0])/2,(l[1]+d[1])/2],a=[(h[0]+p[0])/2,(h[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],a=u.touch0[1]}u.zoom("touch",o(_(r,i,a),u.extent,f))}}function k(){if(this.__zooming){var n,r,i=x(this,arguments),o=t.event.changedTouches,a=o.length;for(Kb(),e&&clearTimeout(e),e=setTimeout(function(){e=null},d),n=0;n<a;++n)r=o[n],i.touch0&&i.touch0[2]===r.identifier?delete i.touch0:i.touch1&&i.touch1[2]===r.identifier&&delete i.touch1;if(i.touch1&&!i.touch0&&(i.touch0=i.touch1,delete i.touch1),i.touch0)i.touch0[1]=this.__zoom.invert(i.touch0[0]);else if(i.end(),2===i.taps){var u=Rt(this).on("dblclick.zoom");u&&u.apply(this,arguments)}}}return g.transform=function(t,n,e){var r=t.selection?t.selection():t;r.property("__zoom",em),t!==r?m(t,n,e):r.interrupt().each(function(){x(this,arguments).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()})},g.scaleBy=function(t,n,e){g.scaleTo(t,function(){var t=this.__zoom.k,e="function"==typeof n?n.apply(this,arguments):n;return t*e},e)},g.scaleTo=function(t,n,e){g.transform(t,function(){var t=i.apply(this,arguments),r=this.__zoom,a=null==e?b(t):"function"==typeof e?e.apply(this,arguments):e,u=r.invert(a),c="function"==typeof n?n.apply(this,arguments):n;return o(_(y(r,c),a,u),t,f)},e)},g.translateBy=function(t,n,e){g.transform(t,function(){return o(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof e?e.apply(this,arguments):e),i.apply(this,arguments),f)})},g.translateTo=function(t,n,e,r){g.transform(t,function(){var t=i.apply(this,arguments),a=this.__zoom,u=null==r?b(t):"function"==typeof r?r.apply(this,arguments):r;return o(Zb.translate(u[0],u[1]).scale(a.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof e?-e.apply(this,arguments):-e),t,f)},r)},w.prototype={start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){kt(new $b(g,t,this.that.__zoom),h.apply,h,[t,this.that,this.args])}},g.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:Gb(+t),g):a},g.filter=function(t){return arguments.length?(r="function"==typeof t?t:Gb(!!t),g):r},g.touchable=function(t){return arguments.length?(u="function"==typeof t?t:Gb(!!t),g):u},g.extent=function(t){return arguments.length?(i="function"==typeof t?t:Gb([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),g):i},g.scaleExtent=function(t){return arguments.length?(c[0]=+t[0],c[1]=+t[1],g):[c[0],c[1]]},g.translateExtent=function(t){return arguments.length?(f[0][0]=+t[0][0],f[1][0]=+t[1][0],f[0][1]=+t[0][1],f[1][1]=+t[1][1],g):[[f[0][0],f[0][1]],[f[1][0],f[1][1]]]},g.constrain=function(t){return arguments.length?(o=t,g):o},g.duration=function(t){return arguments.length?(s=+t,g):s},g.interpolate=function(t){return arguments.length?(l=t,g):l},g.on=function(){var t=h.on.apply(h,arguments);return t===h?g:t},g.clickDistance=function(t){return arguments.length?(v=(t=+t)*t,g):Math.sqrt(v)},g},t.zoomIdentity=Zb,t.zoomTransform=Qb,Object.defineProperty(t,"__esModule",{value:!0})});
+!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t=t||self).d3=t.d3||{})}(this,function(t){"use strict";function n(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function e(t){var e;return 1===t.length&&(e=t,t=function(t,r){return n(e(t),r)}),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}var r=e(n),i=r.right,o=r.left;function a(t,n){return[t,n]}function u(t){return null===t?NaN:+t}function c(t,n){var e,r,i=t.length,o=0,a=-1,c=0,f=0;if(null==n)for(;++a<i;)isNaN(e=u(t[a]))||(f+=(r=e-c)*(e-(c+=r/++o)));else for(;++a<i;)isNaN(e=u(n(t[a],a,t)))||(f+=(r=e-c)*(e-(c+=r/++o)));if(o>1)return f/(o-1)}function f(t,n){var e=c(t,n);return e?Math.sqrt(e):e}function s(t,n){var e,r,i,o=t.length,a=-1;if(null==n){for(;++a<o;)if(null!=(e=t[a])&&e>=e)for(r=i=e;++a<o;)null!=(e=t[a])&&(r>e&&(r=e),i<e&&(i=e))}else for(;++a<o;)if(null!=(e=n(t[a],a,t))&&e>=e)for(r=i=e;++a<o;)null!=(e=n(t[a],a,t))&&(r>e&&(r=e),i<e&&(i=e));return[r,i]}var l=Array.prototype,h=l.slice,d=l.map;function p(t){return function(){return t}}function v(t){return t}function g(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}var y=Math.sqrt(50),_=Math.sqrt(10),b=Math.sqrt(2);function m(t,n,e){var r,i,o,a,u=-1;if(e=+e,(t=+t)===(n=+n)&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(a=x(t,n,e))||!isFinite(a))return[];if(a>0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(i=Math.ceil(n-t+1));++u<i;)o[u]=(t+u)*a;else for(t=Math.floor(t*a),n=Math.ceil(n*a),o=new Array(i=Math.ceil(t-n+1));++u<i;)o[u]=(t-u)/a;return r&&o.reverse(),o}function x(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=y?10:o>=_?5:o>=b?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=y?10:o>=_?5:o>=b?2:1)}function w(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=y?i*=10:o>=_?i*=5:o>=b&&(i*=2),n<t?-i:i}function M(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}function N(t,n,e){if(null==e&&(e=u),r=t.length){if((n=+n)<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),a=+e(t[o],o,t);return a+(+e(t[o+1],o+1,t)-a)*(i-o)}}function T(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&e>r&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&e>r&&(r=e);return r}function A(t){for(var n,e,r,i=t.length,o=-1,a=0;++o<i;)a+=t[o].length;for(e=new Array(a);--i>=0;)for(n=(r=t[i]).length;--n>=0;)e[--a]=r[n];return e}function S(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&r>e&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&r>e&&(r=e);return r}function k(t){if(!(i=t.length))return[];for(var n=-1,e=S(t,E),r=new Array(e);++n<e;)for(var i,o=-1,a=r[n]=new Array(i);++o<i;)a[o]=t[o][n];return r}function E(t){return t.length}var C=Array.prototype.slice;function P(t){return t}var z=1,R=2,D=3,q=4,L=1e-6;function U(t){return"translate("+(t+.5)+",0)"}function O(t){return"translate(0,"+(t+.5)+")"}function B(){return!this.__axis}function F(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c=t===z||t===q?-1:1,f=t===q||t===R?"x":"y",s=t===z||t===D?U:O;function l(l){var h=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,d=null==i?n.tickFormat?n.tickFormat.apply(n,e):P:i,p=Math.max(o,0)+u,v=n.range(),g=+v[0]+.5,y=+v[v.length-1]+.5,_=(n.bandwidth?function(t){var n=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(n=Math.round(n)),function(e){return+t(e)+n}}:function(t){return function(n){return+t(n)}})(n.copy()),b=l.selection?l.selection():l,m=b.selectAll(".domain").data([null]),x=b.selectAll(".tick").data(h,n).order(),w=x.exit(),M=x.enter().append("g").attr("class","tick"),N=x.select("line"),T=x.select("text");m=m.merge(m.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),x=x.merge(M),N=N.merge(M.append("line").attr("stroke","currentColor").attr(f+"2",c*o)),T=T.merge(M.append("text").attr("fill","currentColor").attr(f,c*p).attr("dy",t===z?"0em":t===D?"0.71em":"0.32em")),l!==b&&(m=m.transition(l),x=x.transition(l),N=N.transition(l),T=T.transition(l),w=w.transition(l).attr("opacity",L).attr("transform",function(t){return isFinite(t=_(t))?s(t):this.getAttribute("transform")}),M.attr("opacity",L).attr("transform",function(t){var n=this.parentNode.__axis;return s(n&&isFinite(n=n(t))?n:_(t))})),w.remove(),m.attr("d",t===q||t==R?a?"M"+c*a+","+g+"H0.5V"+y+"H"+c*a:"M0.5,"+g+"V"+y:a?"M"+g+","+c*a+"V0.5H"+y+"V"+c*a:"M"+g+",0.5H"+y),x.attr("opacity",1).attr("transform",function(t){return s(_(t))}),N.attr(f+"2",c*o),T.attr(f,c*p).text(d),b.filter(B).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===R?"start":t===q?"end":"middle"),b.each(function(){this.__axis=_})}return l.scale=function(t){return arguments.length?(n=t,l):n},l.ticks=function(){return e=C.call(arguments),l},l.tickArguments=function(t){return arguments.length?(e=null==t?[]:C.call(t),l):e.slice()},l.tickValues=function(t){return arguments.length?(r=null==t?null:C.call(t),l):r&&r.slice()},l.tickFormat=function(t){return arguments.length?(i=t,l):i},l.tickSize=function(t){return arguments.length?(o=a=+t,l):o},l.tickSizeInner=function(t){return arguments.length?(o=+t,l):o},l.tickSizeOuter=function(t){return arguments.length?(a=+t,l):a},l.tickPadding=function(t){return arguments.length?(u=+t,l):u},l}var Y={value:function(){}};function I(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new H(r)}function H(t){this._=t}function j(t,n){return t.trim().split(/^|\s+/).map(function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}function X(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function V(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=Y,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}H.prototype=I.prototype={constructor:H,on:function(t,n){var e,r=this._,i=j(t+"",r),o=-1,a=i.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<a;)if(e=(t=i[o]).type)r[e]=V(r[e],t.name,n);else if(null==n)for(e in r)r[e]=V(r[e],t.name,null);return this}for(;++o<a;)if((e=(t=i[o]).type)&&(e=X(r[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new H(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};var G="http://www.w3.org/1999/xhtml",$={svg:"http://www.w3.org/2000/svg",xhtml:G,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function W(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),$.hasOwnProperty(n)?{space:$[n],local:t}:t}function Z(t){var n=W(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===G&&n.documentElement.namespaceURI===G?n.createElement(t):n.createElementNS(e,t)}})(n)}function Q(){}function K(t){return null==t?Q:function(){return this.querySelector(t)}}function J(){return[]}function tt(t){return null==t?J:function(){return this.querySelectorAll(t)}}function nt(t){return function(){return this.matches(t)}}function et(t){return new Array(t.length)}function rt(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}rt.prototype={constructor:rt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var it="$";function ot(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;u<f;++u)(a=n[u])?(a.__data__=o[u],r[u]=a):e[u]=new rt(t,o[u]);for(;u<c;++u)(a=n[u])&&(i[u]=a)}function at(t,n,e,r,i,o,a){var u,c,f,s={},l=n.length,h=o.length,d=new Array(l);for(u=0;u<l;++u)(c=n[u])&&(d[u]=f=it+a.call(c,c.__data__,u,n),f in s?i[u]=c:s[f]=c);for(u=0;u<h;++u)(c=s[f=it+a.call(t,o[u],u,o)])?(r[u]=c,c.__data__=o[u],s[f]=null):e[u]=new rt(t,o[u]);for(u=0;u<l;++u)(c=n[u])&&s[d[u]]===c&&(i[u]=c)}function ut(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function ct(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ft(t,n){return t.style.getPropertyValue(n)||ct(t).getComputedStyle(t,null).getPropertyValue(n)}function st(t){return t.trim().split(/^|\s+/)}function lt(t){return t.classList||new ht(t)}function ht(t){this._node=t,this._names=st(t.getAttribute("class")||"")}function dt(t,n){for(var e=lt(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function pt(t,n){for(var e=lt(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function vt(){this.textContent=""}function gt(){this.innerHTML=""}function yt(){this.nextSibling&&this.parentNode.appendChild(this)}function _t(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function bt(){return null}function mt(){var t=this.parentNode;t&&t.removeChild(this)}function xt(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function wt(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}ht.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Mt={};(t.event=null,"undefined"!=typeof document)&&("onmouseenter"in document.documentElement||(Mt={mouseenter:"mouseover",mouseleave:"mouseout"}));function Nt(t,n,e){return t=Tt(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function Tt(n,e,r){return function(i){var o=t.event;t.event=i;try{n.call(this,this.__data__,e,r)}finally{t.event=o}}}function At(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.capture);++i?n.length=i:delete this.__on}}}function St(t,n,e){var r=Mt.hasOwnProperty(t.type)?Nt:Tt;return function(i,o,a){var u,c=this.__on,f=r(n,o,a);if(c)for(var s=0,l=c.length;s<l;++s)if((u=c[s]).type===t.type&&u.name===t.name)return this.removeEventListener(u.type,u.listener,u.capture),this.addEventListener(u.type,u.listener=f,u.capture=e),void(u.value=n);this.addEventListener(t.type,f,e),u={type:t.type,name:t.name,value:n,listener:f,capture:e},c?c.push(u):this.__on=[u]}}function kt(n,e,r,i){var o=t.event;n.sourceEvent=t.event,t.event=n;try{return e.apply(r,i)}finally{t.event=o}}function Et(t,n,e){var r=ct(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}var Ct=[null];function Pt(t,n){this._groups=t,this._parents=n}function zt(){return new Pt([[document.documentElement]],Ct)}function Rt(t){return"string"==typeof t?new Pt([[document.querySelector(t)]],[document.documentElement]):new Pt([[t]],Ct)}Pt.prototype=zt.prototype={constructor:Pt,select:function(t){"function"!=typeof t&&(t=K(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a,u=n[i],c=u.length,f=r[i]=new Array(c),s=0;s<c;++s)(o=u[s])&&(a=t.call(o,o.__data__,s,u))&&("__data__"in o&&(a.__data__=o.__data__),f[s]=a);return new Pt(r,this._parents)},selectAll:function(t){"function"!=typeof t&&(t=tt(t));for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var a,u=n[o],c=u.length,f=0;f<c;++f)(a=u[f])&&(r.push(t.call(a,a.__data__,f,u)),i.push(a));return new Pt(r,i)},filter:function(t){"function"!=typeof t&&(t=nt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Pt(r,this._parents)},data:function(t,n){if(!t)return d=new Array(this.size()),f=-1,this.each(function(t){d[++f]=t}),d;var e=n?at:ot,r=this._parents,i=this._groups;"function"!=typeof t&&(t=function(t){return function(){return t}}(t));for(var o=i.length,a=new Array(o),u=new Array(o),c=new Array(o),f=0;f<o;++f){var s=r[f],l=i[f],h=l.length,d=t.call(s,s&&s.__data__,f,r),p=d.length,v=u[f]=new Array(p),g=a[f]=new Array(p);e(s,l,v,g,c[f]=new Array(h),d,n);for(var y,_,b=0,m=0;b<p;++b)if(y=v[b]){for(b>=m&&(m=b+1);!(_=g[m])&&++m<p;);y._next=_||null}}return(a=new Pt(a,r))._enter=u,a._exit=c,a},enter:function(){return new Pt(this._enter||this._groups.map(et),this._parents)},exit:function(){return new Pt(this._exit||this._groups.map(et),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return r="function"==typeof t?t(r):r.append(t+""),null!=n&&(i=n(i)),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new Pt(a,this._parents)},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=ut);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var a,u=e[o],c=u.length,f=i[o]=new Array(c),s=0;s<c;++s)(a=u[s])&&(f[s]=a);f.sort(n)}return new Pt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),n=-1;return this.each(function(){t[++n]=this}),t},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){var t=0;return this.each(function(){++t}),t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,n){var e=W(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}}:"function"==typeof n?e.local?function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}:function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}:e.local?function(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}:function(t,n){return function(){this.setAttribute(t,n)}})(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?"":e)):ft(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:"function"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=st(t+"");if(arguments.length<2){for(var r=lt(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?function(t,n){return function(){(n.apply(this,arguments)?dt:pt)(this,t)}}:n?function(t){return function(){dt(this,t)}}:function(t){return function(){pt(this,t)}})(e,n))},text:function(t){return arguments.length?this.each(null==t?vt:("function"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}:function(t){return function(){this.textContent=t}})(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?gt:("function"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}:function(t){return function(){this.innerHTML=t}})(t)):this.node().innerHTML},raise:function(){return this.each(yt)},lower:function(){return this.each(_t)},append:function(t){var n="function"==typeof t?t:Z(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})},insert:function(t,n){var e="function"==typeof t?t:Z(t),r=null==n?bt:"function"==typeof n?n:K(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(mt)},clone:function(t){return this.select(t?wt:xt)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=function(t){return t.trim().split(/^|\s+/).map(function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?St:At,null==e&&(e=!1),r=0;r<a;++r)this.each(u(o[r],n,e));return this}var u=this.node().__on;if(u)for(var c,f=0,s=u.length;f<s;++f)for(r=0,c=u[f];r<a;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,n){return this.each(("function"==typeof n?function(t,n){return function(){return Et(this,t,n.apply(this,arguments))}}:function(t,n){return function(){return Et(this,t,n)}})(t,n))}};var Dt=0;function qt(){return new Lt}function Lt(){this._="@"+(++Dt).toString(36)}function Ut(){for(var n,e=t.event;n=e.sourceEvent;)e=n;return e}function Ot(t,n){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=n.clientX,r.y=n.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]}function Bt(t){var n=Ut();return n.changedTouches&&(n=n.changedTouches[0]),Ot(t,n)}function Ft(t,n,e){arguments.length<3&&(e=n,n=Ut().changedTouches);for(var r,i=0,o=n?n.length:0;i<o;++i)if((r=n[i]).identifier===e)return Ot(t,r);return null}function Yt(){t.event.stopImmediatePropagation()}function It(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function Ht(t){var n=t.document.documentElement,e=Rt(t).on("dragstart.drag",It,!0);"onselectstart"in n?e.on("selectstart.drag",It,!0):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function jt(t,n){var e=t.document.documentElement,r=Rt(t).on("dragstart.drag",null);n&&(r.on("click.drag",It,!0),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}function Xt(t){return function(){return t}}function Vt(t,n,e,r,i,o,a,u,c,f){this.target=t,this.type=n,this.subject=e,this.identifier=r,this.active=i,this.x=o,this.y=a,this.dx=u,this.dy=c,this._=f}function Gt(){return!t.event.ctrlKey&&!t.event.button}function $t(){return this.parentNode}function Wt(n){return null==n?{x:t.event.x,y:t.event.y}:n}function Zt(){return navigator.maxTouchPoints||"ontouchstart"in this}function Qt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Kt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Jt(){}Lt.prototype=qt.prototype={constructor:Lt,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}},Vt.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var tn="\\s*([+-]?\\d+)\\s*",nn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",en="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",rn=/^#([0-9a-f]{3,8})$/,on=new RegExp("^rgb\\("+[tn,tn,tn]+"\\)$"),an=new RegExp("^rgb\\("+[en,en,en]+"\\)$"),un=new RegExp("^rgba\\("+[tn,tn,tn,nn]+"\\)$"),cn=new RegExp("^rgba\\("+[en,en,en,nn]+"\\)$"),fn=new RegExp("^hsl\\("+[nn,en,en]+"\\)$"),sn=new RegExp("^hsla\\("+[nn,en,en,nn]+"\\)$"),ln={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:1.4.9.00,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function hn(){return this.rgb().formatHex()}function dn(){return this.rgb().formatRgb()}function pn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=rn.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?vn(n):3===e?new bn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?gn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?gn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=on.exec(t))?new bn(n[1],n[2],n[3],1):(n=an.exec(t))?new bn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=un.exec(t))?gn(n[1],n[2],n[3],n[4]):(n=cn.exec(t))?gn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=fn.exec(t))?Mn(n[1],n[2]/100,n[3]/100,1):(n=sn.exec(t))?Mn(n[1],n[2]/100,n[3]/100,n[4]):ln.hasOwnProperty(t)?vn(ln[t]):"transparent"===t?new bn(NaN,NaN,NaN,0):null}function vn(t){return new bn(t>>16&255,t>>8&255,255&t,1)}function gn(t,n,e,r){return r<=0&&(t=n=e=NaN),new bn(t,n,e,r)}function yn(t){return t instanceof Jt||(t=pn(t)),t?new bn((t=t.rgb()).r,t.g,t.b,t.opacity):new bn}function _n(t,n,e,r){return 1===arguments.length?yn(t):new bn(t,n,e,null==r?1:r)}function bn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function mn(){return"#"+wn(this.r)+wn(this.g)+wn(this.b)}function xn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function wn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Mn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new An(t,n,e,r)}function Nn(t){if(t instanceof An)return new An(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=pn(t)),!t)return new An;if(t instanceof An)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e<r):e===o?(r-n)/u+2:(n-e)/u+4,u/=c<.5?o+i:2-o-i,a*=60):u=c>0&&c<1?0:a,new An(a,u,c,t.opacity)}function Tn(t,n,e,r){return 1===arguments.length?Nn(t):new An(t,n,e,null==r?1:r)}function An(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}Qt(Jt,pn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:hn,formatHex:hn,formatHsl:function(){return Nn(this).formatHsl()},formatRgb:dn,toString:dn}),Qt(bn,_n,Kt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:mn,formatHex:mn,formatRgb:xn,toString:xn})),Qt(An,Tn,Kt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new An(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new An(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new bn(Sn(t>=240?t-240:t+120,i,r),Sn(t,i,r),Sn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var kn=Math.PI/180,En=180/Math.PI,Cn=.96422,Pn=1,zn=.82521,Rn=4/29,Dn=6/29,qn=3*Dn*Dn,Ln=Dn*Dn*Dn;function Un(t){if(t instanceof Bn)return new Bn(t.l,t.a,t.b,t.opacity);if(t instanceof Vn)return Gn(t);t instanceof bn||(t=yn(t));var n,e,r=Hn(t.r),i=Hn(t.g),o=Hn(t.b),a=Fn((.2225045*r+.7168786*i+.0606169*o)/Pn);return r===i&&i===o?n=e=a:(n=Fn((.4360747*r+.3850649*i+.1430804*o)/Cn),e=Fn((.0139322*r+.0971045*i+.7141733*o)/zn)),new Bn(116*a-16,500*(n-a),200*(a-e),t.opacity)}function On(t,n,e,r){return 1===arguments.length?Un(t):new Bn(t,n,e,null==r?1:r)}function Bn(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Fn(t){return t>Ln?Math.pow(t,1/3):t/qn+Rn}function Yn(t){return t>Dn?t*t*t:qn*(t-Rn)}function In(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Hn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function jn(t){if(t instanceof Vn)return new Vn(t.h,t.c,t.l,t.opacity);if(t instanceof Bn||(t=Un(t)),0===t.a&&0===t.b)return new Vn(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*En;return new Vn(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Xn(t,n,e,r){return 1===arguments.length?jn(t):new Vn(t,n,e,null==r?1:r)}function Vn(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function Gn(t){if(isNaN(t.h))return new Bn(t.l,0,0,t.opacity);var n=t.h*kn;return new Bn(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}Qt(Bn,On,Kt(Jt,{brighter:function(t){return new Bn(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Bn(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new bn(In(3.1338561*(n=Cn*Yn(n))-1.6168667*(t=Pn*Yn(t))-.4906146*(e=zn*Yn(e))),In(-.9787684*n+1.9161415*t+.033454*e),In(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),Qt(Vn,Xn,Kt(Jt,{brighter:function(t){return new Vn(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Vn(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Gn(this).rgb()}}));var $n=-.14861,Wn=1.78277,Zn=-.29227,Qn=-.90649,Kn=1.97294,Jn=Kn*Qn,te=Kn*Wn,ne=Wn*Zn-Qn*$n;function ee(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof re)return new re(t.h,t.s,t.l,t.opacity);t instanceof bn||(t=yn(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(ne*r+Jn*n-te*e)/(ne+Jn-te),o=r-i,a=(Kn*(e-i)-Zn*o)/Qn,u=Math.sqrt(a*a+o*o)/(Kn*i*(1-i)),c=u?Math.atan2(a,o)*En-120:NaN;return new re(c<0?c+360:c,u,i,t.opacity)}(t):new re(t,n,e,null==r?1:r)}function re(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function ie(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}function oe(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<n-1?t[r+2]:2*o-i;return ie((e-r/n)*n,a,i,o,u)}}function ae(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],a=t[(r+1)%n],u=t[(r+2)%n];return ie((e-r/n)*n,i,o,a,u)}}function ue(t){return function(){return t}}function ce(t,n){return function(e){return t+e*n}}function fe(t,n){var e=n-t;return e?ce(t,e>180||e<-180?e-360*Math.round(e/360):e):ue(isNaN(t)?n:t)}function se(t){return 1==(t=+t)?le:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):ue(isNaN(n)?e:n)}}function le(t,n){var e=n-t;return e?ce(t,e):ue(isNaN(t)?n:t)}Qt(re,ee,Kt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new re(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new re(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*kn,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new bn(255*(n+e*($n*r+Wn*i)),255*(n+e*(Zn*r+Qn*i)),255*(n+e*(Kn*r)),this.opacity)}}));var he=function t(n){var e=se(n);function r(t,n){var r=e((t=_n(t)).r,(n=_n(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=le(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function de(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;e<i;++e)r=_n(n[e]),o[e]=r.r||0,a[e]=r.g||0,u[e]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}var pe=de(oe),ve=de(ae);function ge(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function ye(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function _e(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(e=0;e<i;++e)o[e]=Te(t[e],n[e]);for(;e<r;++e)a[e]=n[e];return function(t){for(e=0;e<i;++e)a[e]=o[e](t);return a}}function be(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function me(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function xe(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Te(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var we=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Me=new RegExp(we.source,"g");function Ne(t,n){var e,r,i,o=we.lastIndex=Me.lastIndex=0,a=-1,u=[],c=[];for(t+="",n+="";(e=we.exec(t))&&(r=Me.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:me(e,r)})),o=Me.lastIndex;return o<n.length&&(i=n.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?c[0]?function(t){return function(n){return t(n)+""}}(c[0].x):function(t){return function(){return t}}(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)u[(e=c[r]).i]=e.x(t);return u.join("")})}function Te(t,n){var e,r=typeof n;return null==n||"boolean"===r?ue(n):("number"===r?me:"string"===r?(e=pn(n))?(n=e,he):Ne:n instanceof pn?he:n instanceof Date?be:ye(n)?ge:Array.isArray(n)?_e:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?xe:me)(t,n)}function Ae(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}var Se,ke,Ee,Ce,Pe=180/Math.PI,ze={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Re(t,n,e,r,i,o){var a,u,c;return(a=Math.sqrt(t*t+n*n))&&(t/=a,n/=a),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,c/=u),t*r<n*e&&(t=-t,n=-n,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Pe,skewX:Math.atan(c)*Pe,scaleX:a,scaleY:u}}function De(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],c=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var c=a.push("translate(",null,n,null,e);u.push({i:c-4,x:me(t,i)},{i:c-2,x:me(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}(o.translateX,o.translateY,a.translateX,a.translateY,u,c),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:me(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:me(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:me(t,e)},{i:u-2,x:me(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e<r;)u[(n=c[e]).i]=n.x(t);return u.join("")}}}var qe=De(function(t){return"none"===t?ze:(Se||(Se=document.createElement("DIV"),ke=document.documentElement,Ee=document.defaultView),Se.style.transform=t,t=Ee.getComputedStyle(ke.appendChild(Se),null).getPropertyValue("transform"),ke.removeChild(Se),Re(+(t=t.slice(7,-1).split(","))[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},"px, ","px)","deg)"),Le=De(function(t){return null==t?ze:(Ce||(Ce=document.createElementNS("http://www.w3.org/2000/svg","g")),Ce.setAttribute("transform",t),(t=Ce.transform.baseVal.consolidate())?Re((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):ze)},", ",")",")"),Ue=Math.SQRT2,Oe=2,Be=4,Fe=1e-12;function Ye(t){return((t=Math.exp(t))+1/t)/2}function Ie(t,n){var e,r,i=t[0],o=t[1],a=t[2],u=n[0],c=n[1],f=n[2],s=u-i,l=c-o,h=s*s+l*l;if(h<Fe)r=Math.log(f/a)/Ue,e=function(t){return[i+t*s,o+t*l,a*Math.exp(Ue*t*r)]};else{var d=Math.sqrt(h),p=(f*f-a*a+Be*h)/(2*a*Oe*d),v=(f*f-a*a-Be*h)/(2*f*Oe*d),g=Math.log(Math.sqrt(p*p+1)-p),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-g)/Ue,e=function(t){var n=t*r,e=Ye(g),u=a/(Oe*d)*(e*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(Ue*n+g)-function(t){return((t=Math.exp(t))-1/t)/2}(g));return[i+u*s,o+u*l,a*e/Ye(Ue*n+g)]}}return e.duration=1e3*r,e}function He(t){return function(n,e){var r=t((n=Tn(n)).h,(e=Tn(e)).h),i=le(n.s,e.s),o=le(n.l,e.l),a=le(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var je=He(fe),Xe=He(le);function Ve(t){return function(n,e){var r=t((n=Xn(n)).h,(e=Xn(e)).h),i=le(n.c,e.c),o=le(n.l,e.l),a=le(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var Ge=Ve(fe),$e=Ve(le);function We(t){return function n(e){function r(n,r){var i=t((n=ee(n)).h,(r=ee(r)).h),o=le(n.s,r.s),a=le(n.l,r.l),u=le(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=a(Math.pow(t,e)),n.opacity=u(t),n+""}}return e=+e,r.gamma=n,r}(1)}var Ze=We(fe),Qe=We(le);var Ke,Je,tr=0,nr=0,er=0,rr=1e3,ir=0,or=0,ar=0,ur="object"==typeof performance&&performance.now?performance:Date,cr="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function fr(){return or||(cr(sr),or=ur.now()+ar)}function sr(){or=0}function lr(){this._call=this._time=this._next=null}function hr(t,n,e){var r=new lr;return r.restart(t,n,e),r}function dr(){fr(),++tr;for(var t,n=Ke;n;)(t=or-n._time)>=0&&n._call.call(null,t),n=n._next;--tr}function pr(){or=(ir=ur.now())+ar,tr=nr=0;try{dr()}finally{tr=0,function(){var t,n,e=Ke,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Ke=n);Je=t,gr(r)}(),or=0}}function vr(){var t=ur.now(),n=t-ir;n>rr&&(ar-=n,ir=t)}function gr(t){tr||(nr&&(nr=clearTimeout(nr)),t-or>24?(t<1/0&&(nr=setTimeout(pr,t-ur.now()-ar)),er&&(er=clearInterval(er))):(er||(ir=ur.now(),er=setInterval(vr,rr)),tr=1,cr(pr)))}function yr(t,n,e){var r=new lr;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r}lr.prototype=hr.prototype={constructor:lr,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?fr():+e)+(null==n?0:+n),this._next||Je===this||(Je?Je._next=this:Ke=this,Je=this),this._call=t,this._time=e,gr()},stop:function(){this._call&&(this._call=null,this._time=1/0,gr())}};var _r=I("start","end","cancel","interrupt"),br=[],mr=0,xr=1,wr=2,Mr=3,Nr=4,Tr=5,Ar=6;function Sr(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(c){var f,s,l,h;if(e.state!==xr)return u();for(f in i)if((h=i[f]).name===e.name){if(h.state===Mr)return yr(o);h.state===Nr?(h.state=Ar,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+f<n&&(h.state=Ar,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[f])}if(yr(function(){e.state===Mr&&(e.state=Nr,e.timer.restart(a,e.delay,e.time),a(c))}),e.state=wr,e.on.call("start",t,t.__data__,e.index,e.group),e.state===wr){for(e.state=Mr,r=new Array(l=e.tween.length),f=0,s=-1;f<l;++f)(h=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(r[++s]=h);r.length=s+1}}function a(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(u),e.state=Tr,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);e.state===Tr&&(e.on.call("end",t,t.__data__,e.index,e.group),u())}function u(){for(var r in e.state=Ar,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=hr(function(t){e.state=xr,e.timer.restart(o,e.delay,e.time),e.delay<=t&&o(t-e.delay)},0,e.time)}(t,e,{name:n,index:r,group:i,on:_r,tween:br,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:mr})}function kr(t,n){var e=Cr(t,n);if(e.state>mr)throw new Error("too late; already scheduled");return e}function Er(t,n){var e=Cr(t,n);if(e.state>Mr)throw new Error("too late; already running");return e}function Cr(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Pr(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>wr&&e.state<Tr,e.state=Ar,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function zr(t,n,e){var r=t._id;return t.each(function(){var t=Er(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return Cr(t,r).value[n]}}function Rr(t,n){var e;return("number"==typeof n?me:n instanceof pn?he:(e=pn(n))?(n=e,he):Ne)(t,n)}var Dr=zt.prototype.constructor;function qr(t){return function(){this.style.removeProperty(t)}}var Lr=0;function Ur(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Or(t){return zt().transition(t)}function Br(){return++Lr}var Fr=zt.prototype;function Yr(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function Ir(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}Ur.prototype=Or.prototype={constructor:Ur,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=K(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var u,c,f=r[a],s=f.length,l=o[a]=new Array(s),h=0;h<s;++h)(u=f[h])&&(c=t.call(u,u.__data__,h,f))&&("__data__"in u&&(c.__data__=u.__data__),l[h]=c,Sr(l[h],n,e,h,l,Cr(u,e)));return new Ur(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=tt(t));for(var r=this._groups,i=r.length,o=[],a=[],u=0;u<i;++u)for(var c,f=r[u],s=f.length,l=0;l<s;++l)if(c=f[l]){for(var h,d=t.call(c,c.__data__,l,f),p=Cr(c,e),v=0,g=d.length;v<g;++v)(h=d[v])&&Sr(h,n,e,v,d,p);o.push(d),a.push(c)}return new Ur(o,a,n,e)},filter:function(t){"function"!=typeof t&&(t=nt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Ur(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new Ur(a,this._parents,this._name,this._id)},selection:function(){return new Dr(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=Br(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)if(a=u[f]){var s=Cr(a,n);Sr(a,t,e,f,u,{time:s.time+s.delay+s.duration,delay:0,duration:s.duration,ease:s.ease})}return new Ur(r,this._parents,t,e)},call:Fr.call,nodes:Fr.nodes,node:Fr.node,size:Fr.size,empty:Fr.empty,each:Fr.each,on:function(t,n){var e=this._id;return arguments.length<2?Cr(this.node(),e).on.on(t):this.each(function(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t})}(n)?kr:Er;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=W(t),r="transform"===e?Le:Rr;return this.attrTween(t,"function"==typeof n?(e.local?function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}:function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}})(e,r,zr(this,"attr."+t,n)):null==n?(e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(e):(e.local?function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}:function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}})(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=W(t);return this.tween(e,(r.local?function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}(t,i)),e}return i._value=n,i}:function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}(t,i)),e}return i._value=n,i})(r,n))},style:function(t,n,e){var r="transform"==(t+="")?qe:Rr;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=ft(this,t),a=(this.style.removeProperty(t),ft(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,qr(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=ft(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=ft(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,zr(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=Er(this,t),f=c.on,s=null==c.value[a]?o||(o=qr(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=ft(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(zr(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Cr(this.node(),e).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?function(t,n){var e,r;return function(){var i=Er(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a<u;++a)if(r[a].name===n){(r=r.slice()).splice(a,1);break}i.tween=r}}:function(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Er(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:n,value:e},c=0,f=i.length;c<f;++c)if(i[c].name===n){i[c]=u;break}c===f&&i.push(u)}o.tween=i}})(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?function(t,n){return function(){kr(this,t).delay=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){kr(this,t).delay=n}})(n,t)):Cr(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?function(t,n){return function(){Er(this,t).duration=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){Er(this,t).duration=n}})(n,t)):Cr(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if("function"!=typeof n)throw new Error;return function(){Er(this,t).ease=n}}(n,t)):Cr(this.node(),n).ease},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(o,a){var u={value:a},c={value:function(){0==--i&&o()}};e.each(function(){var e=Er(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(c)),e.on=n})})}};var Hr=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),jr=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),Xr=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),Vr=Math.PI,Gr=Vr/2;function $r(t){return(1-Math.cos(Vr*t))/2}function Wr(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function Zr(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var Qr=4/11,Kr=6/11,Jr=8/11,ti=.75,ni=9/11,ei=10/11,ri=.9375,ii=21/22,oi=63/64,ai=1/Qr/Qr;function ui(t){return(t=+t)<Qr?ai*t*t:t<Jr?ai*(t-=Kr)*t+ti:t<ei?ai*(t-=ni)*t+ri:ai*(t-=ii)*t+oi}var ci=function t(n){function e(t){return t*t*((n+1)*t-n)}return n=+n,e.overshoot=t,e}(1.70158),fi=function t(n){function e(t){return--t*t*((n+1)*t+n)+1}return n=+n,e.overshoot=t,e}(1.70158),si=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(1.70158),li=2*Math.PI,hi=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=li);function i(t){return n*Math.pow(2,10*--t)*Math.sin((r-t)/e)}return i.amplitude=function(n){return t(n,e*li)},i.period=function(e){return t(n,e)},i}(1,.3),di=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=li);function i(t){return 1-n*Math.pow(2,-10*(t=+t))*Math.sin((t+r)/e)}return i.amplitude=function(n){return t(n,e*li)},i.period=function(e){return t(n,e)},i}(1,.3),pi=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=li);function i(t){return((t=2*t-1)<0?n*Math.pow(2,10*t)*Math.sin((r-t)/e):2-n*Math.pow(2,-10*t)*Math.sin((r+t)/e))/2}return i.amplitude=function(n){return t(n,e*li)},i.period=function(e){return t(n,e)},i}(1,.3),vi={time:null,delay:0,duration:250,ease:Ir};function gi(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return vi.time=fr(),vi;return e}zt.prototype.interrupt=function(t){return this.each(function(){Pr(this,t)})},zt.prototype.transition=function(t){var n,e;t instanceof Ur?(n=t._id,t=t._name):(n=Br(),(e=vi).time=fr(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)(a=u[f])&&Sr(a,t,n,f,u,e||gi(a,n));return new Ur(r,this._parents,t,n)};var yi=[null];function _i(t){return function(){return t}}function bi(t,n,e){this.target=t,this.type=n,this.selection=e}function mi(){t.event.stopImmediatePropagation()}function xi(){t.event.preventDefault(),t.event.stopImmediatePropagation()}var wi={name:"drag"},Mi={name:"space"},Ni={name:"handle"},Ti={name:"center"};function Ai(t){return[+t[0],+t[1]]}function Si(t){return[Ai(t[0]),Ai(t[1])]}var ki={name:"x",handles:["w","e"].map(Li),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},Ei={name:"y",handles:["n","s"].map(Li),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},Ci={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Li),input:function(t){return null==t?null:Si(t)},output:function(t){return t}},Pi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},zi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Ri={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Di={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},qi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Li(t){return{type:t}}function Ui(){return!t.event.ctrlKey&&!t.event.button}function Oi(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Bi(){return navigator.maxTouchPoints||"ontouchstart"in this}function Fi(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Yi(n){var e,r=Oi,i=Ui,o=Bi,a=!0,u=I("start","brush","end"),c=6;function f(t){var e=t.property("__brush",g).selectAll(".overlay").data([Li("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Pi.overlay).merge(e).each(function(){var t=Fi(this).extent;Rt(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),t.selectAll(".selection").data([Li("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Pi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=t.selectAll(".handle").data(n.handles,function(t){return t.type});r.exit().remove(),r.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return Pi[t.type]}),t.each(s).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",d).filter(o).on("touchstart.brush",d).on("touchmove.brush",p).on("touchend.brush touchcancel.brush",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function s(){var t=Rt(this),n=Fi(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?n[1][0]-c/2:n[0][0]-c/2}).attr("y",function(t){return"s"===t.type[0]?n[1][1]-c/2:n[0][1]-c/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+c:c}).attr("height",function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+c:c})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,n,e){return!e&&t.__brush.emitter||new h(t,n)}function h(t,n){this.that=t,this.args=n,this.state=t.__brush,this.active=0}function d(){if((!e||t.event.touches)&&i.apply(this,arguments)){var r,o,u,c,f,h,d,p,v,g,y,_,b=this,m=t.event.target.__data__.type,x="selection"===(a&&t.event.metaKey?m="overlay":m)?wi:a&&t.event.altKey?Ti:Ni,w=n===Ei?null:Di[m],M=n===ki?null:qi[m],N=Fi(b),T=N.extent,A=N.selection,S=T[0][0],k=T[0][1],E=T[1][0],C=T[1][1],P=0,z=0,R=w&&M&&a&&t.event.shiftKey,D=t.event.touches?(_=t.event.changedTouches[0].identifier,function(n){return Ft(n,t.event.touches,_)}):Bt,q=D(b),L=q,U=l(b,arguments,!0).beforestart();"overlay"===m?(A&&(v=!0),N.selection=A=[[r=n===Ei?S:q[0],u=n===ki?k:q[1]],[f=n===Ei?E:r,d=n===ki?C:u]]):(r=A[0][0],u=A[0][1],f=A[1][0],d=A[1][1]),o=r,c=u,h=f,p=d;var O=Rt(b).attr("pointer-events","none"),B=O.selectAll(".overlay").attr("cursor",Pi[m]);if(t.event.touches)U.moved=Y,U.ended=H;else{var F=Rt(t.event.view).on("mousemove.brush",Y,!0).on("mouseup.brush",H,!0);a&&F.on("keydown.brush",function(){switch(t.event.keyCode){case 16:R=w&&M;break;case 18:x===Ni&&(w&&(f=h-P*w,r=o+P*w),M&&(d=p-z*M,u=c+z*M),x=Ti,I());break;case 32:x!==Ni&&x!==Ti||(w<0?f=h-P:w>0&&(r=o-P),M<0?d=p-z:M>0&&(u=c-z),x=Mi,B.attr("cursor",Pi.selection),I());break;default:return}xi()},!0).on("keyup.brush",function(){switch(t.event.keyCode){case 16:R&&(g=y=R=!1,I());break;case 18:x===Ti&&(w<0?f=h:w>0&&(r=o),M<0?d=p:M>0&&(u=c),x=Ni,I());break;case 32:x===Mi&&(t.event.altKey?(w&&(f=h-P*w,r=o+P*w),M&&(d=p-z*M,u=c+z*M),x=Ti):(w<0?f=h:w>0&&(r=o),M<0?d=p:M>0&&(u=c),x=Ni),B.attr("cursor",Pi[m]),I());break;default:return}xi()},!0),Ht(t.event.view)}mi(),Pr(b),s.call(b),U.start()}function Y(){var t=D(b);!R||g||y||(Math.abs(t[0]-L[0])>Math.abs(t[1]-L[1])?y=!0:g=!0),L=t,v=!0,xi(),I()}function I(){var t;switch(P=L[0]-q[0],z=L[1]-q[1],x){case Mi:case wi:w&&(P=Math.max(S-r,Math.min(E-f,P)),o=r+P,h=f+P),M&&(z=Math.max(k-u,Math.min(C-d,z)),c=u+z,p=d+z);break;case Ni:w<0?(P=Math.max(S-r,Math.min(E-r,P)),o=r+P,h=f):w>0&&(P=Math.max(S-f,Math.min(E-f,P)),o=r,h=f+P),M<0?(z=Math.max(k-u,Math.min(C-u,z)),c=u+z,p=d):M>0&&(z=Math.max(k-d,Math.min(C-d,z)),c=u,p=d+z);break;case Ti:w&&(o=Math.max(S,Math.min(E,r-P*w)),h=Math.max(S,Math.min(E,f+P*w))),M&&(c=Math.max(k,Math.min(C,u-z*M)),p=Math.max(k,Math.min(C,d+z*M)))}h<o&&(w*=-1,t=r,r=f,f=t,t=o,o=h,h=t,m in zi&&B.attr("cursor",Pi[m=zi[m]])),p<c&&(M*=-1,t=u,u=d,d=t,t=c,c=p,p=t,m in Ri&&B.attr("cursor",Pi[m=Ri[m]])),N.selection&&(A=N.selection),g&&(o=A[0][0],h=A[1][0]),y&&(c=A[0][1],p=A[1][1]),A[0][0]===o&&A[0][1]===c&&A[1][0]===h&&A[1][1]===p||(N.selection=[[o,c],[h,p]],s.call(b),U.brush())}function H(){if(mi(),t.event.touches){if(t.event.touches.length)return;e&&clearTimeout(e),e=setTimeout(function(){e=null},500)}else jt(t.event.view,v),F.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);O.attr("pointer-events","all"),B.attr("cursor",Pi.overlay),N.selection&&(A=N.selection),function(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}(A)&&(N.selection=null,s.call(b)),U.end()}}function p(){l(this,arguments).moved()}function v(){l(this,arguments).ended()}function g(){var t=this.__brush||{selection:null};return t.extent=Si(r.apply(this,arguments)),t.dim=n,t}return f.move=function(t,e){t.selection?t.on("start.brush",function(){l(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){l(this,arguments).end()}).tween("brush",function(){var t=this,r=t.__brush,i=l(t,arguments),o=r.selection,a=n.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=Te(o,a);function c(n){r.selection=1===n&&null===a?null:u(n),s.call(t),i.brush()}return null!==o&&null!==a?c:c(1)}):t.each(function(){var t=this,r=arguments,i=t.__brush,o=n.input("function"==typeof e?e.apply(t,r):e,i.extent),a=l(t,r).beforestart();Pr(t),i.selection=null===o?null:o,s.call(t),a.start().brush().end()})},f.clear=function(t){f.move(t,null)},h.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){kt(new bi(f,t,n.output(this.state.selection)),u.apply,u,[t,this.that,this.args])}},f.extent=function(t){return arguments.length?(r="function"==typeof t?t:_i(Si(t)),f):r},f.filter=function(t){return arguments.length?(i="function"==typeof t?t:_i(!!t),f):i},f.touchable=function(t){return arguments.length?(o="function"==typeof t?t:_i(!!t),f):o},f.handleSize=function(t){return arguments.length?(c=+t,f):c},f.keyModifiers=function(t){return arguments.length?(a=!!t,f):a},f.on=function(){var t=u.on.apply(u,arguments);return t===u?f:t},f}var Ii=Math.cos,Hi=Math.sin,ji=Math.PI,Xi=ji/2,Vi=2*ji,Gi=Math.max;function $i(t){return function(n,e){return t(n.source.value+n.target.value,e.source.value+e.target.value)}}var Wi=Array.prototype.slice;function Zi(t){return function(){return t}}var Qi=Math.PI,Ki=2*Qi,Ji=Ki-1e-6;function to(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function no(){return new to}function eo(t){return t.source}function ro(t){return t.target}function io(t){return t.radius}function oo(t){return t.startAngle}function ao(t){return t.endAngle}to.prototype=no.prototype={constructor:to,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,o){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(l>1e-6)if(Math.abs(s*u-c*f)>1e-6&&i){var h=e-o,d=r-a,p=u*u+c*c,v=h*h+d*d,g=Math.sqrt(p),y=Math.sqrt(l),_=i*Math.tan((Qi-Math.acos((p+l-v)/(2*g*y)))/2),b=_/y,m=_/g;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*f)+","+(n+b*s)),this._+="A"+i+","+i+",0,0,"+ +(s*h>f*d)+","+(this._x1=t+m*u)+","+(this._y1=n+m*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,o=!!o;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+f:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-f)>1e-6)&&(this._+="L"+c+","+f),e&&(l<0&&(l=l%Ki+Ki),l>Ji?this._+="A"+e+","+e+",0,1,"+s+","+(t-a)+","+(n-u)+"A"+e+","+e+",0,1,"+s+","+(this._x1=c)+","+(this._y1=f):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=Qi)+","+s+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};function uo(){}function co(t,n){var e=new uo;if(t instanceof uo)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i<o;)e.set(i,t[i]);else for(;++i<o;)e.set(n(r=t[i],i,t),r)}else if(t)for(var a in t)e.set(a,t[a]);return e}function fo(){return{}}function so(t,n,e){t[n]=e}function lo(){return co()}function ho(t,n,e){t.set(n,e)}function po(){}uo.prototype=co.prototype={constructor:uo,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,n){return this["$"+t]=n,this},remove:function(t){var n="$"+t;return n in this&&delete this[n]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(n.slice(1));return t},values:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(this[n]);return t},entries:function(){var t=[];for(var n in this)"$"===n[0]&&t.push({key:n.slice(1),value:this[n]});return t},size:function(){var t=0;for(var n in this)"$"===n[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var n in this)"$"===n[0]&&t(this[n],n.slice(1),this)}};var vo=co.prototype;function go(t,n){var e=new po;if(t instanceof po)t.each(function(t){e.add(t)});else if(t){var r=-1,i=t.length;if(null==n)for(;++r<i;)e.add(t[r]);else for(;++r<i;)e.add(n(t[r],r,t))}return e}po.prototype=go.prototype={constructor:po,has:vo.has,add:function(t){return this["$"+(t+="")]=t,this},remove:vo.remove,clear:vo.clear,values:vo.keys,size:vo.size,empty:vo.empty,each:vo.each};var yo=Array.prototype.slice;function _o(t,n){return t-n}function bo(t){return function(){return t}}function mo(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=xo(t,n[r]))return e;return 0}function xo(t,n){for(var e=n[0],r=n[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var c=t[o],f=c[0],s=c[1],l=t[u],h=l[0],d=l[1];if(wo(c,l,n))return 0;s>r!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function wo(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function Mo(){}var No=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function To(){var t=1,n=1,e=M,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(_o);else{var r=s(t),i=r[0],a=r[1];n=w(i,a,n),n=g(Math.floor(i/n)*n,Math.floor(a/n)*n,n)}return n.map(function(n){return o(t,n)})}function o(e,i){var o=[],u=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=e[0]>=r,No[f<<1].forEach(p);for(;++o<t-1;)c=f,f=e[o+1]>=r,No[c|f<<1].forEach(p);No[f<<0].forEach(p);for(;++u<n-1;){for(o=-1,f=e[u*t+t]>=r,s=e[u*t]>=r,No[f<<1|s<<2].forEach(p);++o<t-1;)c=f,f=e[u*t+t+o+1]>=r,l=s,s=e[u*t+o+1]>=r,No[c|f<<1|s<<2|l<<3].forEach(p);No[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,No[s<<2].forEach(p);for(;++o<t-1;)l=s,s=e[u*t+o+1]>=r,No[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}No[s<<3].forEach(p)}(e,i,function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?o.push([t]):u.push(t)}),u.forEach(function(t){for(var n,e=0,r=o.length;e<r;++e)if(-1!==mo((n=o[e])[0],t))return void n.push(t)}),{type:"MultiPolygon",value:i,coordinates:o}}function a(n){return 2*n[0]+n[1]*(t+1)*4}function u(e,r,i){e.forEach(function(e){var o,a=e[0],u=e[1],c=0|a,f=0|u,s=r[f*t+c];a>0&&a<t&&c===a&&(o=r[f*t+c-1],e[0]=a+(i-o)/(s-o)-.5),u>0&&u<n&&f===u&&(o=r[(f-1)*t+c],e[1]=u+(i-o)/(s-o)-.5)})}return i.contour=o,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.ceil(e[0]),o=Math.ceil(e[1]);if(!(r>0&&o>0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?bo(yo.call(t)):bo(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:Mo,i):r===u},i}function Ao(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a<i;++a)for(var u=0,c=0;u<r+e;++u)u<r&&(c+=t.data[u+a*r]),u>=e&&(u>=o&&(c-=t.data[u-o+a*r]),n.data[u-e+a*r]=c/Math.min(u+1,r-1+o-u,o))}function So(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a<r;++a)for(var u=0,c=0;u<i+e;++u)u<i&&(c+=t.data[a+u*r]),u>=e&&(u>=o&&(c-=t.data[a+(u-o)*r]),n.data[a+(u-e)*r]=c/Math.min(u+1,i-1+o-u,o))}function ko(t){return t[0]}function Eo(t){return t[1]}function Co(){return 1}var Po={},zo={},Ro=34,Do=10,qo=13;function Lo(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'}).join(",")+"}")}function Uo(t){var n=Object.create(null),e=[];return t.forEach(function(t){for(var r in t)r in n||e.push(n[r]=r)}),e}function Oo(t,n){var e=t+"",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function Bo(t){var n=t.getUTCHours(),e=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":function(t){return t<0?"-"+Oo(-t,6):t>9999?"+"+Oo(t,6):Oo(t,4)}(t.getUTCFullYear())+"-"+Oo(t.getUTCMonth()+1,2)+"-"+Oo(t.getUTCDate(),2)+(i?"T"+Oo(n,2)+":"+Oo(e,2)+":"+Oo(r,2)+"."+Oo(i,3)+"Z":r?"T"+Oo(n,2)+":"+Oo(e,2)+":"+Oo(r,2)+"Z":e||n?"T"+Oo(n,2)+":"+Oo(e,2)+"Z":"")}function Fo(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return zo;if(f)return f=!1,Po;var n,r,i=a;if(t.charCodeAt(i)===Ro){for(;a++<o&&t.charCodeAt(a)!==Ro||t.charCodeAt(++a)===Ro;);return(n=a)>=o?c=!0:(r=t.charCodeAt(a++))===Do?f=!0:r===qo&&(f=!0,t.charCodeAt(a)===Do&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a<o;){if((r=t.charCodeAt(n=a++))===Do)f=!0;else if(r===qo)f=!0,t.charCodeAt(a)===Do&&++a;else if(r!==e)continue;return t.slice(i,n)}return c=!0,t.slice(i,o)}for(t.charCodeAt(o-1)===Do&&--o,t.charCodeAt(o-1)===qo&&--o;(r=s())!==zo;){for(var l=[];r!==Po&&r!==zo;)l.push(r),r=s();n&&null==(l=n(l,u++))||i.push(l)}return i}function i(n,e){return n.map(function(n){return e.map(function(t){return a(n[t])}).join(t)})}function o(n){return n.map(a).join(t)}function a(t){return null==t?"":t instanceof Date?Bo(t):n.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,n){var e,i,o=r(t,function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=Lo(t);return function(r,i){return n(e(r),i,t)}}(t,n):Lo(t)});return o.columns=i||[],o},parseRows:r,format:function(n,e){return null==e&&(e=Uo(n)),[e.map(a).join(t)].concat(i(n,e)).join("\n")},formatBody:function(t,n){return null==n&&(n=Uo(t)),i(t,n).join("\n")},formatRows:function(t){return t.map(o).join("\n")},formatRow:o,formatValue:a}}var Yo=Fo(","),Io=Yo.parse,Ho=Yo.parseRows,jo=Yo.format,Xo=Yo.formatBody,Vo=Yo.formatRows,Go=Yo.formatRow,$o=Yo.formatValue,Wo=Fo("\t"),Zo=Wo.parse,Qo=Wo.parseRows,Ko=Wo.format,Jo=Wo.formatBody,ta=Wo.formatRows,na=Wo.formatRow,ea=Wo.formatValue;var ra=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function ia(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function oa(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function aa(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function ua(t,n){return fetch(t,n).then(aa)}function ca(t){return function(n,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=void 0),ua(n,e).then(function(n){return t(n,r)})}}var fa=ca(Io),sa=ca(Zo);function la(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.json()}function ha(t){return function(n,e){return ua(n,e).then(function(n){return(new DOMParser).parseFromString(n,t)})}}var da=ha("application/xml"),pa=ha("text/html"),va=ha("image/svg+xml");function ga(t){return function(){return t}}function ya(){return 1e-6*(Math.random()-.5)}function _a(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},v=t._x0,g=t._y0,y=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function ba(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function ma(t){return t[0]}function xa(t){return t[1]}function wa(t,n,e){var r=new Ma(null==n?ma:n,null==e?xa:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Ma(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Na(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Ta=wa.prototype=Ma.prototype;function Aa(t){return t.x+t.vx}function Sa(t){return t.y+t.vy}function ka(t){return t.index}function Ea(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function Ca(t){return t.x}function Pa(t){return t.y}Ta.copy=function(){var t,n,e=new Ma(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Na(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Na(n));return e},Ta.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return _a(this.cover(n,e),n,e,t)},Ta.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;e<o;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(a[e]=r,u[e]=i,r<c&&(c=r),r>s&&(s=r),i<f&&(f=i),i>l&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;e<o;++e)_a(this,a[e],u[e],t[e]);return this},Ta.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{for(var a,u,c=i-e,f=this._root;e>t||t>=i||r>n||n>=o;)switch(u=(n<r)<<1|t<e,(a=new Array(4))[u]=f,f=a,c*=2,u){case 0:i=e+c,o=r+c;break;case 1:e=i-c,o=r+c;break;case 2:i=e+c,r=o-c;break;case 3:e=i-c,r=o-c}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},Ta.data=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},Ta.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},Ta.find=function(t,n,e){var r,i,o,a,u,c,f,s=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],v=this._root;for(v&&p.push(new ba(v,s,l,h,d)),null==e?e=1/0:(s=t-e,l=n-e,h=t+e,d=n+e,e*=e);c=p.pop();)if(!(!(v=c.node)||(i=c.x0)>h||(o=c.y0)>d||(a=c.x1)<s||(u=c.y1)<l))if(v.length){var g=(i+a)/2,y=(o+u)/2;p.push(new ba(v[3],g,y,a,u),new ba(v[2],i,y,g,u),new ba(v[1],g,o,a,y),new ba(v[0],i,o,g,y)),(f=(n>=y)<<1|t>=g)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,v.data),b=n-+this._y.call(null,v.data),m=_*_+b*b;if(m<e){var x=Math.sqrt(e=m);s=t-x,l=n-x,h=t+x,d=n+x,r=v.data}}return r},Ta.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var n,e,r,i,o,a,u,c,f,s,l,h,d=this._root,p=this._x0,v=this._y0,g=this._x1,y=this._y1;if(!d)return this;if(d.length)for(;;){if((f=o>=(u=(p+g)/2))?p=u:g=u,(s=a>=(c=(v+y)/2))?v=c:y=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Ta.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},Ta.root=function(){return this._root},Ta.size=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t},Ta.visit=function(t){var n,e,r,i,o,a,u=[],c=this._root;for(c&&u.push(new ba(c,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&c.length){var f=(r+o)/2,s=(i+a)/2;(e=c[3])&&u.push(new ba(e,f,s,o,a)),(e=c[2])&&u.push(new ba(e,r,s,f,a)),(e=c[1])&&u.push(new ba(e,f,i,o,s)),(e=c[0])&&u.push(new ba(e,r,i,f,s))}return this},Ta.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new ba(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,c=n.x1,f=n.y1,s=(a+c)/2,l=(u+f)/2;(o=i[0])&&e.push(new ba(o,a,u,s,l)),(o=i[1])&&e.push(new ba(o,s,u,c,l)),(o=i[2])&&e.push(new ba(o,a,l,s,f)),(o=i[3])&&e.push(new ba(o,s,l,c,f))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},Ta.x=function(t){return arguments.length?(this._x=t,this):this._x},Ta.y=function(t){return arguments.length?(this._y=t,this):this._y};var za=10,Ra=Math.PI*(3-Math.sqrt(5));function Da(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function qa(t){return(t=Da(Math.abs(t)))?t[1]:NaN}var La,Ua=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Oa(t){if(!(n=Ua.exec(t)))throw new Error("invalid format: "+t);var n;return new Ba({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function Ba(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Fa(t,n){var e=Da(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Oa.prototype=Ba.prototype,Ba.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ya={"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Fa(100*t,n)},r:Fa,s:function(t,n){var e=Da(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(La=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Da(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function Ia(t){return t}var Ha,ja=Array.prototype.map,Xa=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Va(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?Ia:(n=ja.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?Ia:function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(ja.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"-":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=Oa(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,v=t.comma,g=t.precision,y=t.trim,_=t.type;"n"===_?(v=!0,_="g"):Ya[_]||(void 0===g&&(g=12),y=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=Ya[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var N=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),g),y&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),N&&0==+t&&"+"!==l&&(N=!1),h=(N?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?Xa[8+La/3]:"")+M+(N&&"("===l?")":""),w)for(i=-1,o=t.length;++i<o;)if(48>(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}v&&!d&&(t=r(t,1/0));var T=h.length+t.length+M.length,A=T<p?new Array(p-T+1).join(n):"";switch(v&&d&&(t=r(A+t,A.length?p-M.length:1/0),A=""),e){case"<":t=h+t+M+A;break;case"=":t=h+A+t+M;break;case"^":t=A.slice(0,T=A.length>>1)+h+t+M+A.slice(T);break;default:t=A+h+t+M}return u(t)}return g=void 0===g?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=Oa(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(qa(n)/3))),i=Math.pow(10,-r),o=Xa[8+r/3];return function(t){return e(i*t)+o}}}}function Ga(n){return Ha=Va(n),t.format=Ha.format,t.formatPrefix=Ha.formatPrefix,Ha}function $a(t){return Math.max(0,-qa(Math.abs(t)))}function Wa(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(qa(n)/3)))-qa(Math.abs(t)))}function Za(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,qa(n)-qa(t))+1}function Qa(){return new Ka}function Ka(){this.reset()}Ga({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Ka.prototype={constructor:Ka,reset:function(){this.s=this.t=0},add:function(t){tu(Ja,t,this.t),tu(this,Ja.s,this.s),this.s?this.t+=Ja.t:this.s=Ja.t},valueOf:function(){return this.s}};var Ja=new Ka;function tu(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}var nu=1e-6,eu=1e-12,ru=Math.PI,iu=ru/2,ou=ru/4,au=2*ru,uu=180/ru,cu=ru/180,fu=Math.abs,su=Math.atan,lu=Math.atan2,hu=Math.cos,du=Math.ceil,pu=Math.exp,vu=Math.log,gu=Math.pow,yu=Math.sin,_u=Math.sign||function(t){return t>0?1:t<0?-1:0},bu=Math.sqrt,mu=Math.tan;function xu(t){return t>1?0:t<-1?ru:Math.acos(t)}function wu(t){return t>1?iu:t<-1?-iu:Math.asin(t)}function Mu(t){return(t=yu(t/2))*t}function Nu(){}function Tu(t,n){t&&Su.hasOwnProperty(t.type)&&Su[t.type](t,n)}var Au={Feature:function(t,n){Tu(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Tu(e[r].geometry,n)}},Su={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){ku(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)ku(e[r],n,0)},Polygon:function(t,n){Eu(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Eu(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Tu(e[r],n)}};function ku(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function Eu(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)ku(t[e],n,1);n.polygonEnd()}function Cu(t,n){t&&Au.hasOwnProperty(t.type)?Au[t.type](t,n):Tu(t,n)}var Pu,zu,Ru,Du,qu,Lu=Qa(),Uu=Qa(),Ou={point:Nu,lineStart:Nu,lineEnd:Nu,polygonStart:function(){Lu.reset(),Ou.lineStart=Bu,Ou.lineEnd=Fu},polygonEnd:function(){var t=+Lu;Uu.add(t<0?au+t:t),this.lineStart=this.lineEnd=this.point=Nu},sphere:function(){Uu.add(au)}};function Bu(){Ou.point=Yu}function Fu(){Iu(Pu,zu)}function Yu(t,n){Ou.point=Iu,Pu=t,zu=n,Ru=t*=cu,Du=hu(n=(n*=cu)/2+ou),qu=yu(n)}function Iu(t,n){var e=(t*=cu)-Ru,r=e>=0?1:-1,i=r*e,o=hu(n=(n*=cu)/2+ou),a=yu(n),u=qu*a,c=Du*o+u*hu(i),f=u*r*yu(i);Lu.add(lu(f,c)),Ru=t,Du=o,qu=a}function Hu(t){return[lu(t[1],t[0]),wu(t[2])]}function ju(t){var n=t[0],e=t[1],r=hu(e);return[r*hu(n),r*yu(n),yu(e)]}function Xu(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Vu(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Gu(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function $u(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function Wu(t){var n=bu(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var Zu,Qu,Ku,Ju,tc,nc,ec,rc,ic,oc,ac,uc,cc,fc,sc,lc,hc,dc,pc,vc,gc,yc,_c,bc,mc,xc,wc=Qa(),Mc={point:Nc,lineStart:Ac,lineEnd:Sc,polygonStart:function(){Mc.point=kc,Mc.lineStart=Ec,Mc.lineEnd=Cc,wc.reset(),Ou.polygonStart()},polygonEnd:function(){Ou.polygonEnd(),Mc.point=Nc,Mc.lineStart=Ac,Mc.lineEnd=Sc,Lu<0?(Zu=-(Ku=180),Qu=-(Ju=90)):wc>nu?Ju=90:wc<-nu&&(Qu=-90),oc[0]=Zu,oc[1]=Ku},sphere:function(){Zu=-(Ku=180),Qu=-(Ju=90)}};function Nc(t,n){ic.push(oc=[Zu=t,Ku=t]),n<Qu&&(Qu=n),n>Ju&&(Ju=n)}function Tc(t,n){var e=ju([t*cu,n*cu]);if(rc){var r=Vu(rc,e),i=Vu([r[1],-r[0],0],r);Wu(i),i=Hu(i);var o,a=t-tc,u=a>0?1:-1,c=i[0]*uu*u,f=fu(a)>180;f^(u*tc<c&&c<u*t)?(o=i[1]*uu)>Ju&&(Ju=o):f^(u*tc<(c=(c+360)%360-180)&&c<u*t)?(o=-i[1]*uu)<Qu&&(Qu=o):(n<Qu&&(Qu=n),n>Ju&&(Ju=n)),f?t<tc?Pc(Zu,t)>Pc(Zu,Ku)&&(Ku=t):Pc(t,Ku)>Pc(Zu,Ku)&&(Zu=t):Ku>=Zu?(t<Zu&&(Zu=t),t>Ku&&(Ku=t)):t>tc?Pc(Zu,t)>Pc(Zu,Ku)&&(Ku=t):Pc(t,Ku)>Pc(Zu,Ku)&&(Zu=t)}else ic.push(oc=[Zu=t,Ku=t]);n<Qu&&(Qu=n),n>Ju&&(Ju=n),rc=e,tc=t}function Ac(){Mc.point=Tc}function Sc(){oc[0]=Zu,oc[1]=Ku,Mc.point=Nc,rc=null}function kc(t,n){if(rc){var e=t-tc;wc.add(fu(e)>180?e+(e>0?360:-360):e)}else nc=t,ec=n;Ou.point(t,n),Tc(t,n)}function Ec(){Ou.lineStart()}function Cc(){kc(nc,ec),Ou.lineEnd(),fu(wc)>nu&&(Zu=-(Ku=180)),oc[0]=Zu,oc[1]=Ku,rc=null}function Pc(t,n){return(n-=t)<0?n+360:n}function zc(t,n){return t[0]-n[0]}function Rc(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var Dc={sphere:Nu,point:qc,lineStart:Uc,lineEnd:Fc,polygonStart:function(){Dc.lineStart=Yc,Dc.lineEnd=Ic},polygonEnd:function(){Dc.lineStart=Uc,Dc.lineEnd=Fc}};function qc(t,n){t*=cu;var e=hu(n*=cu);Lc(e*hu(t),e*yu(t),yu(n))}function Lc(t,n,e){cc+=(t-cc)/++ac,fc+=(n-fc)/ac,sc+=(e-sc)/ac}function Uc(){Dc.point=Oc}function Oc(t,n){t*=cu;var e=hu(n*=cu);bc=e*hu(t),mc=e*yu(t),xc=yu(n),Dc.point=Bc,Lc(bc,mc,xc)}function Bc(t,n){t*=cu;var e=hu(n*=cu),r=e*hu(t),i=e*yu(t),o=yu(n),a=lu(bu((a=mc*o-xc*i)*a+(a=xc*r-bc*o)*a+(a=bc*i-mc*r)*a),bc*r+mc*i+xc*o);uc+=a,lc+=a*(bc+(bc=r)),hc+=a*(mc+(mc=i)),dc+=a*(xc+(xc=o)),Lc(bc,mc,xc)}function Fc(){Dc.point=qc}function Yc(){Dc.point=Hc}function Ic(){jc(yc,_c),Dc.point=qc}function Hc(t,n){yc=t,_c=n,t*=cu,n*=cu,Dc.point=jc;var e=hu(n);bc=e*hu(t),mc=e*yu(t),xc=yu(n),Lc(bc,mc,xc)}function jc(t,n){t*=cu;var e=hu(n*=cu),r=e*hu(t),i=e*yu(t),o=yu(n),a=mc*o-xc*i,u=xc*r-bc*o,c=bc*i-mc*r,f=bu(a*a+u*u+c*c),s=wu(f),l=f&&-s/f;pc+=l*a,vc+=l*u,gc+=l*c,uc+=s,lc+=s*(bc+(bc=r)),hc+=s*(mc+(mc=i)),dc+=s*(xc+(xc=o)),Lc(bc,mc,xc)}function Xc(t){return function(){return t}}function Vc(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function Gc(t,n){return[fu(t)>ru?t+Math.round(-t/au)*au:t,n]}function $c(t,n,e){return(t%=au)?n||e?Vc(Zc(t),Qc(n,e)):Zc(t):n||e?Qc(n,e):Gc}function Wc(t){return function(n,e){return[(n+=t)>ru?n-au:n<-ru?n+au:n,e]}}function Zc(t){var n=Wc(t);return n.invert=Wc(-t),n}function Qc(t,n){var e=hu(t),r=yu(t),i=hu(n),o=yu(n);function a(t,n){var a=hu(n),u=hu(t)*a,c=yu(t)*a,f=yu(n),s=f*e+u*r;return[lu(c*i-s*o,u*e-f*r),wu(s*i+c*o)]}return a.invert=function(t,n){var a=hu(n),u=hu(t)*a,c=yu(t)*a,f=yu(n),s=f*i-c*o;return[lu(c*i+f*o,u*e+s*r),wu(s*e-u*r)]},a}function Kc(t){function n(n){return(n=t(n[0]*cu,n[1]*cu))[0]*=uu,n[1]*=uu,n}return t=$c(t[0]*cu,t[1]*cu,t.length>2?t[2]*cu:0),n.invert=function(n){return(n=t.invert(n[0]*cu,n[1]*cu))[0]*=uu,n[1]*=uu,n},n}function Jc(t,n,e,r,i,o){if(e){var a=hu(n),u=yu(n),c=r*e;null==i?(i=n+r*au,o=n-c/2):(i=tf(a,i),o=tf(a,o),(r>0?i<o:i>o)&&(i+=r*au));for(var f,s=i;r>0?s>o:s<o;s-=c)f=Hu([a,-u*hu(s),-u*yu(s)]),t.point(f[0],f[1])}}function tf(t,n){(n=ju(n))[0]-=t,Wu(n);var e=xu(-n[1]);return((-n[2]<0?-e:e)+au-nu)%au}function nf(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:Nu,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function ef(t,n){return fu(t[0]-n[0])<nu&&fu(t[1]-n[1])<nu}function rf(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function of(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach(function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(ef(r,a)){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);i.lineEnd()}else u.push(e=new rf(r,t,null,!0)),c.push(e.o=new rf(r,null,e,!1)),u.push(e=new rf(a,t,null,!1)),c.push(e.o=new rf(a,null,e,!0))}}),u.length){for(c.sort(n),af(u),af(c),o=0,a=c.length;o<a;++o)c[o].e=e=!e;for(var f,s,l=u[0];;){for(var h=l,d=!0;h.v;)if((h=h.n)===l)return;f=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=f.length;o<a;++o)i.point((s=f[o])[0],s[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(f=h.p.z,o=f.length-1;o>=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function af(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}Gc.invert=Gc;var uf=Qa();function cf(t){return fu(t[0])<=ru?t[0]:_u(t[0])*((fu(t[0])+ru)%au-ru)}function ff(t,n){var e=cf(n),r=n[1],i=yu(r),o=[yu(e),-hu(e),0],a=0,u=0;uf.reset(),1===i?r=iu+nu:-1===i&&(r=-iu-nu);for(var c=0,f=t.length;c<f;++c)if(l=(s=t[c]).length)for(var s,l,h=s[l-1],d=cf(h),p=h[1]/2+ou,v=yu(p),g=hu(p),y=0;y<l;++y,d=b,v=x,g=w,h=_){var _=s[y],b=cf(_),m=_[1]/2+ou,x=yu(m),w=hu(m),M=b-d,N=M>=0?1:-1,T=N*M,A=T>ru,S=v*x;if(uf.add(lu(S*N*yu(T),g*w+S*hu(T))),a+=A?M+N*au:M,A^d>=e^b>=e){var k=Vu(ju(h),ju(_));Wu(k);var E=Vu(o,k);Wu(E);var C=(A^M>=0?-1:1)*wu(E[2]);(r>C||r===C&&(k[0]||k[1]))&&(u+=A^M>=0?1:-1)}}return(a<-nu||a<nu&&uf<-nu)^1&u}function sf(t,n,e,r){return function(i){var o,a,u,c=n(i),f=nf(),s=n(f),l=!1,h={point:d,lineStart:v,lineEnd:g,polygonStart:function(){h.point=y,h.lineStart=_,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=v,h.lineEnd=g,a=A(a);var t=ff(o,r);a.length?(l||(i.polygonStart(),l=!0),of(a,hf,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function v(){h.point=p,c.lineStart()}function g(){h.point=d,c.lineEnd()}function y(t,n){u.push([t,n]),s.point(t,n)}function _(){s.lineStart(),u=[]}function b(){y(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(lf))}return h}}function lf(t){return t.length>1}function hf(t,n){return((t=t.x)[0]<0?t[1]-iu-nu:iu-t[1])-((n=n.x)[0]<0?n[1]-iu-nu:iu-n[1])}var df=sf(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?ru:-ru,c=fu(o-e);fu(c-ru)<nu?(t.point(e,r=(r+a)/2>0?iu:-iu),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=ru&&(fu(e-i)<nu&&(e-=i*nu),fu(o-u)<nu&&(o-=u*nu),r=function(t,n,e,r){var i,o,a=yu(t-e);return fu(a)>nu?su((yu(n)*(o=hu(r))*yu(e)-yu(r)*(i=hu(n))*yu(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*iu,r.point(-ru,i),r.point(0,i),r.point(ru,i),r.point(ru,0),r.point(ru,-i),r.point(0,-i),r.point(-ru,-i),r.point(-ru,0),r.point(-ru,i);else if(fu(t[0]-n[0])>nu){var o=t[0]<n[0]?ru:-ru;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])},[-ru,-iu]);function pf(t){var n=hu(t),e=6*cu,r=n>0,i=fu(n)>nu;function o(t,e){return hu(t)*hu(e)>n}function a(t,e,r){var i=[1,0,0],o=Vu(ju(t),ju(e)),a=Xu(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=Vu(i,o),h=$u(i,f);Gu(h,$u(o,s));var d=l,p=Xu(h,d),v=Xu(d,d),g=p*p-v*(Xu(h,h)-1);if(!(g<0)){var y=bu(g),_=$u(d,(-p-y)/v);if(Gu(_,h),_=Hu(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x<m&&(b=m,m=x,x=b);var N=x-m,T=fu(N-ru)<nu;if(!T&&M<w&&(b=w,w=M,M=b),T||N<nu?T?w+M>0^_[1]<(fu(_[0]-m)<nu?w:M):w<=_[1]&&_[1]<=M:N>ru^(m<=_[0]&&_[0]<=x)){var A=$u(d,(-p+y)/v);return Gu(A,h),[_,Hu(A)]}}}function u(n,e){var i=r?t:ru-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return sf(o,function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],v=o(l,h),g=r?v?0:u(l,h):v?u(l+(l<0?ru:-ru),h):0;if(!n&&(f=c=v)&&t.lineStart(),v!==c&&(!(d=a(n,p))||ef(n,d)||ef(p,d))&&(p[0]+=nu,p[1]+=nu,v=o(p[0],p[1])),v!==c)s=0,v?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(i&&n&&r^v){var y;g&e||!(y=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1])))}!v||n&&ef(n,p)||t.point(p[0],p[1]),n=p,c=v,e=g},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}},function(n,r,i,o){Jc(o,t,e,i,n,r)},r?[0,-t]:[-ru,t-ru])}var vf=1e9,gf=-vf;function yf(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return fu(r[0]-t)<nu?i>0?0:3:fu(r[0]-e)<nu?i>0?2:1:fu(r[1]-n)<nu?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,v,g,y,_,b=a,m=nf(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);y=!0,g=!1,p=v=NaN},lineEnd:function(){c&&(M(l,h),d&&g&&m.rejoin(),c.push(m.result()));x.point=w,g&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;e<i;++e)for(var o,a,u=f[e],c=1,s=u.length,l=u[0],h=l[0],d=l[1];c<s;++c)o=h,a=d,l=u[c],h=l[0],d=l[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=A(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&of(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),y)l=o,h=a,d=u,y=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&g)b.point(o,a);else{var c=[p=Math.max(gf,Math.min(vf,p)),v=Math.max(gf,Math.min(vf,v))],m=[o=Math.max(gf,Math.min(vf,o)),a=Math.max(gf,Math.min(vf,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a<f)return;a<s&&(s=a)}else if(l>0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a<f)return;a<s&&(s=a)}if(a=r-c,h||!(a>0)){if(a/=h,h<0){if(a<f)return;a<s&&(s=a)}else if(h>0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a<f)return;a<s&&(s=a)}return f>0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(g||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,v=a,g=u}return x}}var _f,bf,mf,xf=Qa(),wf={sphere:Nu,point:Nu,lineStart:function(){wf.point=Nf,wf.lineEnd=Mf},lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu};function Mf(){wf.point=wf.lineEnd=Nu}function Nf(t,n){_f=t*=cu,bf=yu(n*=cu),mf=hu(n),wf.point=Tf}function Tf(t,n){t*=cu;var e=yu(n*=cu),r=hu(n),i=fu(t-_f),o=hu(i),a=r*yu(i),u=mf*e-bf*r*o,c=bf*e+mf*r*o;xf.add(lu(bu(a*a+u*u),c)),_f=t,bf=e,mf=r}function Af(t){return xf.reset(),Cu(t,wf),+xf}var Sf=[null,null],kf={type:"LineString",coordinates:Sf};function Ef(t,n){return Sf[0]=t,Sf[1]=n,Af(kf)}var Cf={Feature:function(t,n){return zf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(zf(e[r].geometry,n))return!0;return!1}},Pf={Sphere:function(){return!0},Point:function(t,n){return Rf(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Rf(e[r],n))return!0;return!1},LineString:function(t,n){return Df(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Df(e[r],n))return!0;return!1},Polygon:function(t,n){return qf(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(qf(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(zf(e[r],n))return!0;return!1}};function zf(t,n){return!(!t||!Pf.hasOwnProperty(t.type))&&Pf[t.type](t,n)}function Rf(t,n){return 0===Ef(t,n)}function Df(t,n){for(var e,r,i,o=0,a=t.length;o<a;o++){if(0===(r=Ef(t[o],n)))return!0;if(o>0&&(i=Ef(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<eu*i)return!0;e=r}return!1}function qf(t,n){return!!ff(t.map(Lf),Uf(n))}function Lf(t){return(t=t.map(Uf)).pop(),t}function Uf(t){return[t[0]*cu,t[1]*cu]}function Of(t,n,e){var r=g(t,n-nu,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function Bf(t,n,e){var r=g(t,n-nu,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function Ff(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,v=360,y=2.5;function _(){return{type:"MultiLineString",coordinates:b()}}function b(){return g(du(r/p)*p,e,p).map(s).concat(g(du(u/v)*v,a,v).map(l)).concat(g(du(n/h)*h,t,h).filter(function(t){return fu(t%p)>nu}).map(c)).concat(g(du(o/d)*d,i,d).filter(function(t){return fu(t%v)>nu}).map(f))}return _.lines=function(){return b().map(function(t){return{type:"LineString",coordinates:t}})},_.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),_.precision(y)):[[r,u],[e,a]]},_.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),_.precision(y)):[[n,o],[t,i]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(p=+t[0],v=+t[1],_):[p,v]},_.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],_):[h,d]},_.precision=function(h){return arguments.length?(y=+h,c=Of(o,i,90),f=Bf(n,t,y),s=Of(u,a,90),l=Bf(r,e,y),_):y},_.extentMajor([[-180,-90+nu],[180,90-nu]]).extentMinor([[-180,-80-nu],[180,80+nu]])}function Yf(t){return t}var If,Hf,jf,Xf,Vf=Qa(),Gf=Qa(),$f={point:Nu,lineStart:Nu,lineEnd:Nu,polygonStart:function(){$f.lineStart=Wf,$f.lineEnd=Kf},polygonEnd:function(){$f.lineStart=$f.lineEnd=$f.point=Nu,Vf.add(fu(Gf)),Gf.reset()},result:function(){var t=Vf/2;return Vf.reset(),t}};function Wf(){$f.point=Zf}function Zf(t,n){$f.point=Qf,If=jf=t,Hf=Xf=n}function Qf(t,n){Gf.add(Xf*t-jf*n),jf=t,Xf=n}function Kf(){Qf(If,Hf)}var Jf=1/0,ts=Jf,ns=-Jf,es=ns,rs={point:function(t,n){t<Jf&&(Jf=t);t>ns&&(ns=t);n<ts&&(ts=n);n>es&&(es=n)},lineStart:Nu,lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu,result:function(){var t=[[Jf,ts],[ns,es]];return ns=es=-(ts=Jf=1/0),t}};var is,os,as,us,cs=0,fs=0,ss=0,ls=0,hs=0,ds=0,ps=0,vs=0,gs=0,ys={point:_s,lineStart:bs,lineEnd:ws,polygonStart:function(){ys.lineStart=Ms,ys.lineEnd=Ns},polygonEnd:function(){ys.point=_s,ys.lineStart=bs,ys.lineEnd=ws},result:function(){var t=gs?[ps/gs,vs/gs]:ds?[ls/ds,hs/ds]:ss?[cs/ss,fs/ss]:[NaN,NaN];return cs=fs=ss=ls=hs=ds=ps=vs=gs=0,t}};function _s(t,n){cs+=t,fs+=n,++ss}function bs(){ys.point=ms}function ms(t,n){ys.point=xs,_s(as=t,us=n)}function xs(t,n){var e=t-as,r=n-us,i=bu(e*e+r*r);ls+=i*(as+t)/2,hs+=i*(us+n)/2,ds+=i,_s(as=t,us=n)}function ws(){ys.point=_s}function Ms(){ys.point=Ts}function Ns(){As(is,os)}function Ts(t,n){ys.point=As,_s(is=as=t,os=us=n)}function As(t,n){var e=t-as,r=n-us,i=bu(e*e+r*r);ls+=i*(as+t)/2,hs+=i*(us+n)/2,ds+=i,ps+=(i=us*t-as*n)*(as+t),vs+=i*(us+n),gs+=3*i,_s(as=t,us=n)}function Ss(t){this._context=t}Ss.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,au)}},result:Nu};var ks,Es,Cs,Ps,zs,Rs=Qa(),Ds={point:Nu,lineStart:function(){Ds.point=qs},lineEnd:function(){ks&&Ls(Es,Cs),Ds.point=Nu},polygonStart:function(){ks=!0},polygonEnd:function(){ks=null},result:function(){var t=+Rs;return Rs.reset(),t}};function qs(t,n){Ds.point=Ls,Es=Ps=t,Cs=zs=n}function Ls(t,n){Ps-=t,zs-=n,Rs.add(bu(Ps*Ps+zs*zs)),Ps=t,zs=n}function Us(){this._string=[]}function Os(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Bs(t){return function(n){var e=new Fs;for(var r in t)e[r]=t[r];return e.stream=n,e}}function Fs(){}function Ys(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Cu(e,t.stream(rs)),n(rs.result()),null!=r&&t.clipExtent(r),t}function Is(t,n,e){return Ys(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])},e)}function Hs(t,n,e){return Is(t,[[0,0],n],e)}function js(t,n,e){return Ys(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])},e)}function Xs(t,n,e){return Ys(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])},e)}Us.prototype={_radius:4.5,_circle:Os(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=Os(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},Fs.prototype={constructor:Fs,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Vs=16,Gs=hu(30*cu);function $s(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,v,g){var y=f-r,_=s-i,b=y*y+_*_;if(b>4*n&&v--){var m=a+h,x=u+d,w=c+p,M=bu(m*m+x*x+w*w),N=wu(w/=M),T=fu(fu(w)-1)<nu||fu(o-l)<nu?(o+l)/2:lu(x,m),A=t(T,N),S=A[0],k=A[1],E=S-r,C=k-i,P=_*E-y*C;(P*P/b>n||fu((y*E+_*C)/b-.5)>.3||a*h+u*d+c*p<Gs)&&(e(r,i,o,a,u,c,S,k,T,m/=M,x/=M,w,v,g),g.point(S,k),e(S,k,T,m,x,w,f,s,l,h,d,p,v,g))}}return function(n){var r,i,o,a,u,c,f,s,l,h,d,p,v={point:g,lineStart:y,lineEnd:b,polygonStart:function(){n.polygonStart(),v.lineStart=m},polygonEnd:function(){n.polygonEnd(),v.lineStart=y}};function g(e,r){e=t(e,r),n.point(e[0],e[1])}function y(){s=NaN,v.point=_,n.lineStart()}function _(r,i){var o=ju([r,i]),a=t(r,i);e(s,l,f,h,d,p,s=a[0],l=a[1],f=r,h=o[0],d=o[1],p=o[2],Vs,n),n.point(s,l)}function b(){v.point=g,n.lineEnd()}function m(){y(),v.point=x,v.lineEnd=w}function x(t,n){_(r=t,n),i=s,o=l,a=h,u=d,c=p,v.point=_}function w(){e(s,l,f,h,d,p,i,o,r,a,u,c,Vs,n),v.lineEnd=b,b()}return v}}(t,n):function(t){return Bs({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var Ws=Bs({point:function(t,n){this.stream.point(t*cu,n*cu)}});function Zs(t,n,e,r,i,o){var a=hu(o),u=yu(o),c=a*t,f=u*t,s=a/t,l=u/t,h=(u*e-a*n)/t,d=(u*n+a*e)/t;function p(t,o){return[c*(t*=r)-f*(o*=i)+n,e-f*t-c*o]}return p.invert=function(t,n){return[r*(s*t-l*n+h),i*(d-l*t-s*n)]},p}function Qs(t){return Ks(function(){return t})()}function Ks(t){var n,e,r,i,o,a,u,c,f,s,l=150,h=480,d=250,p=0,v=0,g=0,y=0,_=0,b=0,m=1,x=1,w=null,M=df,N=null,T=Yf,A=.5;function S(t){return c(t[0]*cu,t[1]*cu)}function k(t){return(t=c.invert(t[0],t[1]))&&[t[0]*uu,t[1]*uu]}function E(){var t=Zs(l,0,0,m,x,b).apply(null,n(p,v)),r=(b?Zs:function(t,n,e,r,i){function o(o,a){return[n+t*(o*=r),e-t*(a*=i)]}return o.invert=function(o,a){return[(o-n)/t*r,(e-a)/t*i]},o})(l,h-t[0],d-t[1],m,x,b);return e=$c(g,y,_),u=Vc(n,r),c=Vc(e,u),a=$s(u,A),C()}function C(){return f=s=null,S}return S.stream=function(t){return f&&s===t?f:f=Ws(function(t){return Bs({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(M(a(T(s=t)))))},S.preclip=function(t){return arguments.length?(M=t,w=void 0,C()):M},S.postclip=function(t){return arguments.length?(T=t,N=r=i=o=null,C()):T},S.clipAngle=function(t){return arguments.length?(M=+t?pf(w=t*cu):(w=null,df),C()):w*uu},S.clipExtent=function(t){return arguments.length?(T=null==t?(N=r=i=o=null,Yf):yf(N=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),C()):null==N?null:[[N,r],[i,o]]},S.scale=function(t){return arguments.length?(l=+t,E()):l},S.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],E()):[h,d]},S.center=function(t){return arguments.length?(p=t[0]%360*cu,v=t[1]%360*cu,E()):[p*uu,v*uu]},S.rotate=function(t){return arguments.length?(g=t[0]%360*cu,y=t[1]%360*cu,_=t.length>2?t[2]%360*cu:0,E()):[g*uu,y*uu,_*uu]},S.angle=function(t){return arguments.length?(b=t%360*cu,E()):b*uu},S.reflectX=function(t){return arguments.length?(m=t?-1:1,E()):m<0},S.reflectY=function(t){return arguments.length?(x=t?-1:1,E()):x<0},S.precision=function(t){return arguments.length?(a=$s(u,A=t*t),C()):bu(A)},S.fitExtent=function(t,n){return Is(S,t,n)},S.fitSize=function(t,n){return Hs(S,t,n)},S.fitWidth=function(t,n){return js(S,t,n)},S.fitHeight=function(t,n){return Xs(S,t,n)},function(){return n=t.apply(this,arguments),S.invert=n.invert&&k,E()}}function Js(t){var n=0,e=ru/3,r=Ks(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*cu,e=t[1]*cu):[n*uu,e*uu]},i}function tl(t,n){var e=yu(t),r=(e+yu(n))/2;if(fu(r)<nu)return function(t){var n=hu(t);function e(t,e){return[t*n,yu(e)/n]}return e.invert=function(t,e){return[t/n,wu(e*n)]},e}(t);var i=1+e*(2*r-e),o=bu(i)/r;function a(t,n){var e=bu(i-2*r*yu(n))/r;return[e*yu(t*=r),o-e*hu(t)]}return a.invert=function(t,n){var e=o-n,a=lu(t,fu(e))*_u(e);return e*r<0&&(a-=ru*_u(t)*_u(e)),[a/r,wu((i-(t*t+e*e)*r*r)/(2*r))]},a}function nl(){return Js(tl).scale(155.424).center([0,33.6442])}function el(){return nl().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function rl(t){return function(n,e){var r=hu(n),i=hu(e),o=t(r*i);return[o*i*yu(n),o*yu(e)]}}function il(t){return function(n,e){var r=bu(n*n+e*e),i=t(r),o=yu(i),a=hu(i);return[lu(n*o,r*a),wu(r&&e*o/r)]}}var ol=rl(function(t){return bu(2/(1+t))});ol.invert=il(function(t){return 2*wu(t/2)});var al=rl(function(t){return(t=xu(t))&&t/yu(t)});function ul(t,n){return[t,vu(mu((iu+n)/2))]}function cl(t){var n,e,r,i=Qs(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=ru*a(),u=i(Kc(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===ul?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function fl(t){return mu((iu+t)/2)}function sl(t,n){var e=hu(t),r=t===n?yu(t):vu(e/hu(n))/vu(fl(n)/fl(t)),i=e*gu(fl(t),r)/r;if(!r)return ul;function o(t,n){i>0?n<-iu+nu&&(n=-iu+nu):n>iu-nu&&(n=iu-nu);var e=i/gu(fl(n),r);return[e*yu(r*t),i-e*hu(r*t)]}return o.invert=function(t,n){var e=i-n,o=_u(r)*bu(t*t+e*e),a=lu(t,fu(e))*_u(e);return e*r<0&&(a-=ru*_u(t)*_u(e)),[a/r,2*su(gu(i/o,1/r))-iu]},o}function ll(t,n){return[t,n]}function hl(t,n){var e=hu(t),r=t===n?yu(t):(e-hu(n))/(n-t),i=e/r+t;if(fu(r)<nu)return ll;function o(t,n){var e=i-n,o=r*t;return[e*yu(o),i-e*hu(o)]}return o.invert=function(t,n){var e=i-n,o=lu(t,fu(e))*_u(e);return e*r<0&&(o-=ru*_u(t)*_u(e)),[o/r,i-_u(r)*bu(t*t+e*e)]},o}al.invert=il(function(t){return t}),ul.invert=function(t,n){return[t,2*su(pu(n))-iu]},ll.invert=ll;var dl=1.340264,pl=-.081106,vl=893e-6,gl=.003796,yl=bu(3)/2;function _l(t,n){var e=wu(yl*yu(n)),r=e*e,i=r*r*r;return[t*hu(e)/(yl*(dl+3*pl*r+i*(7*vl+9*gl*r))),e*(dl+pl*r+i*(vl+gl*r))]}function bl(t,n){var e=hu(n),r=hu(t)*e;return[e*yu(t)/r,yu(n)/r]}function ml(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function xl(t,n){return[hu(n)*yu(t),yu(n)]}function wl(t,n){var e=hu(n),r=1+hu(t)*e;return[e*yu(t)/r,yu(n)/r]}function Ml(t,n){return[vu(mu((iu+n)/2)),-t]}function Nl(t,n){return t.parent===n.parent?1:2}function Tl(t,n){return t+n.x}function Al(t,n){return Math.max(t,n.y)}function Sl(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function kl(t,n){var e,r,i,o,a,u=new zl(t),c=+t.value&&(u.value=t.value),f=[u];for(null==n&&(n=El);e=f.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(a=i.length))for(e.children=new Array(a),o=a-1;o>=0;--o)f.push(r=e.children[o]=new zl(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Pl)}function El(t){return t.children}function Cl(t){t.data=t.data.data}function Pl(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function zl(t){this.data=t,this.depth=this.height=0,this.parent=null}_l.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(dl+pl*i+o*(vl+gl*i))-n)/(dl+3*pl*i+o*(7*vl+9*gl*i)))*r)*i*i,!(fu(e)<eu));++a);return[yl*t*(dl+3*pl*i+o*(7*vl+9*gl*i))/hu(r),wu(yu(r)/yl)]},bl.invert=il(su),ml.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(fu(e)>nu&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},xl.invert=il(wu),wl.invert=il(function(t){return 2*su(t)}),Ml.invert=function(t,n){return[-n,2*su(pu(t))-iu]},zl.prototype=kl.prototype={constructor:zl,count:function(){return this.eachAfter(Sl)},each:function(t){var n,e,r,i,o=this,a=[o];do{for(n=a.reverse(),a=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r<i;++r)a.push(e[r])}while(a.length);return this},eachAfter:function(t){for(var n,e,r,i=this,o=[i],a=[];i=o.pop();)if(a.push(i),n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e]);for(;i=a.pop();)t(i);return this},eachBefore:function(t){for(var n,e,r=this,i=[r];r=i.pop();)if(t(r),n=r.children)for(e=n.length-1;e>=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return kl(this).eachBefore(Cl)}};var Rl=Array.prototype.slice;function Dl(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(Rl.call(t))).length,o=[];r<i;)n=t[r],e&&Ul(e,n)?++r:(e=Bl(o=ql(o,n)),r=0);return e}function ql(t,n){var e,r;if(Ol(n,t))return[n];for(e=0;e<t.length;++e)if(Ll(n,t[e])&&Ol(Fl(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(Ll(Fl(t[e],t[r]),n)&&Ll(Fl(t[e],n),t[r])&&Ll(Fl(t[r],n),t[e])&&Ol(Yl(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function Ll(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function Ul(t,n){var e=t.r-n.r+1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function Ol(t,n){for(var e=0;e<n.length;++e)if(!Ul(t,n[e]))return!1;return!0}function Bl(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return Fl(t[0],t[1]);case 3:return Yl(t[0],t[1],t[2])}}function Fl(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,a=n.y,u=n.r,c=o-e,f=a-r,s=u-i,l=Math.sqrt(c*c+f*f);return{x:(e+o+c/l*s)/2,y:(r+a+f/l*s)/2,r:(l+i+u)/2}}function Yl(t,n,e){var r=t.x,i=t.y,o=t.r,a=n.x,u=n.y,c=n.r,f=e.x,s=e.y,l=e.r,h=r-a,d=r-f,p=i-u,v=i-s,g=c-o,y=l-o,_=r*r+i*i-o*o,b=_-a*a-u*u+c*c,m=_-f*f-s*s+l*l,x=d*p-h*v,w=(p*m-v*b)/(2*x)-r,M=(v*g-p*y)/x,N=(d*b-h*m)/(2*x)-i,T=(h*y-d*g)/x,A=M*M+T*T-1,S=2*(o+w*M+N*T),k=w*w+N*N-o*o,E=-(A?(S+Math.sqrt(S*S-4*A*k))/(2*A):k/S);return{x:r+w+M*E,y:i+N+T*E,r:E}}function Il(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function Hl(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function jl(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function Xl(t){this._=t,this.next=null,this.previous=null}function Vl(t){if(!(i=t.length))return 0;var n,e,r,i,o,a,u,c,f,s,l;if((n=t[0]).x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Il(e,n,r=t[2]),n=new Xl(n),e=new Xl(e),r=new Xl(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(u=3;u<i;++u){Il(n._,e._,r=t[u]),r=new Xl(r),c=e.next,f=n.previous,s=e._.r,l=n._.r;do{if(s<=l){if(Hl(c._,r._)){e=c,n.next=e,e.previous=n,--u;continue t}s+=c._.r,c=c.next}else{if(Hl(f._,r._)){(n=f).next=e,e.previous=n,--u;continue t}l+=f._.r,f=f.previous}}while(c!==f.next);for(r.previous=n,r.next=e,n.next=e.previous=e=r,o=jl(n);(r=r.next)!==e;)(a=jl(r))<o&&(n=r,o=a);e=n.next}for(n=[e._],r=e;(r=r.next)!==e;)n.push(r._);for(r=Dl(n),u=0;u<i;++u)(n=t[u]).x-=r.x,n.y-=r.y;return r.r}function Gl(t){return null==t?null:$l(t)}function $l(t){if("function"!=typeof t)throw new Error;return t}function Wl(){return 0}function Zl(t){return function(){return t}}function Ql(t){return Math.sqrt(t.value)}function Kl(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function Jl(t,n){return function(e){if(r=e.children){var r,i,o,a=r.length,u=t(e)*n||0;if(u)for(i=0;i<a;++i)r[i].r+=u;if(o=Vl(r),u)for(i=0;i<a;++i)r[i].r-=u;e.r=o+u}}}function th(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function nh(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function eh(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(r-n)/t.value;++u<c;)(o=a[u]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*f}var rh="$",ih={depth:-1},oh={};function ah(t){return t.id}function uh(t){return t.parentId}function ch(t,n){return t.parent===n.parent?1:2}function fh(t){var n=t.children;return n?n[0]:t.t}function sh(t){var n=t.children;return n?n[n.length-1]:t.t}function lh(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function hh(t,n,e){return t.a.parent===n.parent?t.a:e}function dh(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function ph(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++u<c;)(o=a[u]).x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*f}dh.prototype=Object.create(zl.prototype);var vh=(1+Math.sqrt(5))/2;function gh(t,n,e,r,i,o){for(var a,u,c,f,s,l,h,d,p,v,g,y=[],_=n.children,b=0,m=0,x=_.length,w=n.value;b<x;){c=i-e,f=o-r;do{s=_[m++].value}while(!s&&m<x);for(l=h=s,g=s*s*(v=Math.max(f/c,c/f)/(w*t)),p=Math.max(h/g,g/l);m<x;++m){if(s+=u=_[m].value,u<l&&(l=u),u>h&&(h=u),g=s*s*v,(d=Math.max(h/g,g/l))>p){s-=u;break}p=d}y.push(a={value:s,dice:c<f,children:_.slice(b,m)}),a.dice?eh(a,e,r,i,w?r+=f*s/w:o):ph(a,e,r,w?e+=c*s/w:i,o),w-=s,b=m}return y}var yh=function t(n){function e(t,e,r,i,o){gh(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(vh);var _h=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l<h;){for(c=(u=a[l]).children,f=u.value=0,s=c.length;f<s;++f)u.value+=c[f].value;u.dice?eh(u,e,r,i,r+=(o-r)*u.value/d):ph(u,e,r,e+=(i-e)*u.value/d,o),d-=u.value}else t._squarify=a=gh(n,t,e,r,i,o),a.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(vh);function bh(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function mh(t,n){return t[0]-n[0]||t[1]-n[1]}function xh(t){for(var n=t.length,e=[0,1],r=2,i=2;i<n;++i){for(;r>1&&bh(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function wh(){return Math.random()}var Mh=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(wh),Nh=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(wh),Th=function t(n){function e(){var t=Nh.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(wh),Ah=function t(n){function e(t){return function(){for(var e=0,r=0;r<t;++r)e+=n();return e}}return e.source=t,e}(wh),Sh=function t(n){function e(t){var e=Ah.source(n)(t);return function(){return e()/t}}return e.source=t,e}(wh),kh=function t(n){function e(t){return function(){return-Math.log(1-n())/t}}return e.source=t,e}(wh);function Eh(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function Ch(t,n){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(n).domain(t)}return this}var Ph=Array.prototype,zh=Ph.map,Rh=Ph.slice,Dh={name:"implicit"};function qh(){var t=co(),n=[],e=[],r=Dh;function i(i){var o=i+"",a=t.get(o);if(!a){if(r!==Dh)return r;t.set(o,a=n.push(i))}return e[(a-1)%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=co();for(var r,o,a=-1,u=e.length;++a<u;)t.has(o=(r=e[a])+"")||t.set(o,n.push(r));return i},i.range=function(t){return arguments.length?(e=Rh.call(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return qh(n,e).unknown(r)},Eh.apply(i,arguments),i}function Lh(){var t,n,e=qh().unknown(void 0),r=e.domain,i=e.range,o=[0,1],a=!1,u=0,c=0,f=.5;function s(){var e=r().length,s=o[1]<o[0],l=o[s-0],h=o[1-s];t=(h-l)/Math.max(1,e-u+2*c),a&&(t=Math.floor(t)),l+=(h-l-t*(e-u))*f,n=t*(1-u),a&&(l=Math.round(l),n=Math.round(n));var d=g(e).map(function(n){return l+t*n});return i(s?d.reverse():d)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),s()):r()},e.range=function(t){return arguments.length?(o=[+t[0],+t[1]],s()):o.slice()},e.rangeRound=function(t){return o=[+t[0],+t[1]],a=!0,s()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(a=!!t,s()):a},e.padding=function(t){return arguments.length?(u=Math.min(1,c=+t),s()):u},e.paddingInner=function(t){return arguments.length?(u=Math.min(1,t),s()):u},e.paddingOuter=function(t){return arguments.length?(c=+t,s()):c},e.align=function(t){return arguments.length?(f=Math.max(0,Math.min(1,t)),s()):f},e.copy=function(){return Lh(r(),o).round(a).paddingInner(u).paddingOuter(c).align(f)},Eh.apply(s(),arguments)}function Uh(t){return+t}var Oh=[0,1];function Bh(t){return t}function Fh(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function Yh(t){var n,e=t[0],r=t[t.length-1];return e>r&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function Ih(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i<r?(r=Fh(i,r),o=e(a,o)):(r=Fh(r,i),o=e(o,a)),function(t){return o(r(t))}}function Hh(t,n,e){var r=Math.min(t.length,n.length)-1,o=new Array(r),a=new Array(r),u=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++u<r;)o[u]=Fh(t[u],t[u+1]),a[u]=e(n[u],n[u+1]);return function(n){var e=i(t,n,1,r)-1;return a[e](o[e](n))}}function jh(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Xh(){var t,n,e,r,i,o,a=Oh,u=Oh,c=Te,f=Bh;function s(){return r=Math.min(a.length,u.length)>2?Hh:Ih,i=o=null,l}function l(n){return isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),me)))(e)))},l.domain=function(t){return arguments.length?(a=zh.call(t,Uh),f===Bh||(f=Yh(a)),s()):a.slice()},l.range=function(t){return arguments.length?(u=Rh.call(t),s()):u.slice()},l.rangeRound=function(t){return u=Rh.call(t),c=Ae,s()},l.clamp=function(t){return arguments.length?(f=t?Yh(a):Bh,l):f!==Bh},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Vh(t,n){return Xh()(t,n)}function Gh(n,e,r,i){var o,a=w(n,e,r);switch((i=Oa(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=Wa(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=Za(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=$a(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function $h(t){var n=t.domain;return t.ticks=function(t){var e=n();return m(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Gh(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i=n(),o=0,a=i.length-1,u=i[o],c=i[a];return c<u&&(r=u,u=c,c=r,r=o,o=a,a=r),(r=x(u,c,e))>0?r=x(u=Math.floor(u/r)*r,c=Math.ceil(c/r)*r,e):r<0&&(r=x(u=Math.ceil(u*r)/r,c=Math.floor(c*r)/r,e)),r>0?(i[o]=Math.floor(u/r)*r,i[a]=Math.ceil(c/r)*r,n(i)):r<0&&(i[o]=Math.ceil(u*r)/r,i[a]=Math.floor(c*r)/r,n(i)),t},t}function Wh(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(e=r,r=i,i=e,e=o,o=a,a=e),t[r]=n.floor(o),t[i]=n.ceil(a),t}function Zh(t){return Math.log(t)}function Qh(t){return Math.exp(t)}function Kh(t){return-Math.log(-t)}function Jh(t){return-Math.exp(-t)}function td(t){return isFinite(t)?+("1e"+t):t<0?0:t}function nd(t){return function(n){return-t(-n)}}function ed(n){var e,r,i=n(Zh,Qh),o=i.domain,a=10;function u(){return e=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}(a),r=function(t){return 10===t?td:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}(a),o()[0]<0?(e=nd(e),r=nd(r),n(Kh,Jh)):n(Zh,Qh),i}return i.base=function(t){return arguments.length?(a=+t,u()):a},i.domain=function(t){return arguments.length?(o(t),u()):o()},i.ticks=function(t){var n,i=o(),u=i[0],c=i[i.length-1];(n=c<u)&&(h=u,u=c,c=h);var f,s,l,h=e(u),d=e(c),p=null==t?10:+t,v=[];if(!(a%1)&&d-h<p){if(h=Math.round(h)-1,d=Math.round(d)+1,u>0){for(;h<d;++h)for(s=1,f=r(h);s<a;++s)if(!((l=f*s)<u)){if(l>c)break;v.push(l)}}else for(;h<d;++h)for(s=a-1,f=r(h);s>=1;--s)if(!((l=f*s)<u)){if(l>c)break;v.push(l)}}else v=m(h,d,Math.min(d-h,p)).map(r);return n?v.reverse():v},i.tickFormat=function(n,o){if(null==o&&(o=10===a?".0e":","),"function"!=typeof o&&(o=t.format(o)),n===1/0)return o;null==n&&(n=10);var u=Math.max(1,a*n/i.ticks().length);return function(t){var n=t/r(Math.round(e(t)));return n*a<a-.5&&(n*=a),n<=u?o(t):""}},i.nice=function(){return o(Wh(o(),{floor:function(t){return r(Math.floor(e(t)))},ceil:function(t){return r(Math.ceil(e(t)))}}))},i}function rd(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function id(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function od(t){var n=1,e=t(rd(n),id(n));return e.constant=function(e){return arguments.length?t(rd(n=+e),id(n)):n},$h(e)}function ad(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function ud(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function cd(t){return t<0?-t*t:t*t}function fd(t){var n=t(Bh,Bh),e=1;function r(){return 1===e?t(Bh,Bh):.5===e?t(ud,cd):t(ad(e),ad(1/e))}return n.exponent=function(t){return arguments.length?(e=+t,r()):e},$h(n)}function sd(){var t=fd(Xh());return t.copy=function(){return jh(t,sd()).exponent(t.exponent())},Eh.apply(t,arguments),t}var ld=new Date,hd=new Date;function dd(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=function(n){return t(n=new Date(+n)),n},i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},i.range=function(e,r,o){var a,u=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return u;do{u.push(a=new Date(+e)),n(e,o),t(e)}while(a<e&&e<r);return u},i.filter=function(e){return dd(function(n){if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return ld.setTime(+n),hd.setTime(+r),t(ld),t(hd),Math.floor(e(ld,hd))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var pd=dd(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});pd.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?dd(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):pd:null};var vd=pd.range,gd=6e4,yd=6048e5,_d=dd(function(t){t.setTime(t-t.getMilliseconds())},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),bd=_d.range,md=dd(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,n){t.setTime(+t+n*gd)},function(t,n){return(n-t)/gd},function(t){return t.getMinutes()}),xd=md.range,wd=dd(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*gd)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),Md=wd.range,Nd=dd(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*gd)/864e5},function(t){return t.getDate()-1}),Td=Nd.range;function Ad(t){return dd(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*gd)/yd})}var Sd=Ad(0),kd=Ad(1),Ed=Ad(2),Cd=Ad(3),Pd=Ad(4),zd=Ad(5),Rd=Ad(6),Dd=Sd.range,qd=kd.range,Ld=Ed.range,Ud=Cd.range,Od=Pd.range,Bd=zd.range,Fd=Rd.range,Yd=dd(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),Id=Yd.range,Hd=dd(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Hd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?dd(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var jd=Hd.range,Xd=dd(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*gd)},function(t,n){return(n-t)/gd},function(t){return t.getUTCMinutes()}),Vd=Xd.range,Gd=dd(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),$d=Gd.range,Wd=dd(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),Zd=Wd.range;function Qd(t){return dd(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/yd})}var Kd=Qd(0),Jd=Qd(1),tp=Qd(2),np=Qd(3),ep=Qd(4),rp=Qd(5),ip=Qd(6),op=Kd.range,ap=Jd.range,up=tp.range,cp=np.range,fp=ep.range,sp=rp.range,lp=ip.range,hp=dd(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),dp=hp.range,pp=dd(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});pp.every=function(t){return isFinite(t=Math.floor(t))&&t>0?dd(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var vp=pp.range;function gp(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function yp(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function _p(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function bp(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=Sp(i),s=kp(i),l=Sp(o),h=kp(o),d=Sp(a),p=kp(a),v=Sp(u),g=kp(u),y=Sp(c),_=kp(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Wp,e:Wp,f:tv,H:Zp,I:Qp,j:Kp,L:Jp,m:nv,M:ev,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Cv,s:Pv,S:rv,u:iv,U:ov,V:av,w:uv,W:cv,x:null,X:null,y:fv,Y:sv,Z:lv,"%":Ev},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:hv,e:hv,f:yv,H:dv,I:pv,j:vv,L:gv,m:_v,M:bv,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Cv,s:Pv,S:mv,u:xv,U:wv,V:Mv,w:Nv,W:Tv,x:null,X:null,y:Av,Y:Sv,Z:kv,"%":Ev},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=_[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=g[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,e,r){return N(t,n,e,r)},d:Bp,e:Bp,f:Xp,H:Yp,I:Yp,j:Fp,L:jp,m:Op,M:Ip,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s[r[0].toLowerCase()],e+r[0].length):-1},q:Up,Q:Gp,s:$p,S:Hp,u:Cp,U:Pp,V:zp,w:Ep,W:Rp,x:function(t,n,r){return N(t,e,n,r)},X:function(t,n,e){return N(t,r,n,e)},y:qp,Y:Dp,Z:Lp,"%":Vp};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u<f;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=xp[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=n[r])&&(r=o(e,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join("")}}function M(t,n){return function(e){var r,i,o=_p(1900,void 0,1);if(N(o,t,e+="",0)!=e.length)return null;if("Q"in o)return new Date(o.Q);if("s"in o)return new Date(1e3*o.s+("L"in o?o.L:0));if(!n||"Z"in o||(o.Z=0),"p"in o&&(o.H=o.H%12+12*o.p),void 0===o.m&&(o.m="q"in o?o.q:0),"V"in o){if(o.V<1||o.V>53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=yp(_p(o.y,0,1))).getUTCDay(),r=i>4||0===i?Jd.ceil(r):Jd(r),r=Wd.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=gp(_p(o.y,0,1))).getDay(),r=i>4||0===i?kd.ceil(r):kd(r),r=Nd.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?yp(_p(o.y,0,1)).getUTCDay():gp(_p(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,yp(o)):gp(o)}}function N(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a<u;){if(r>=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in xp?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var mp,xp={"-":"",_:" ",0:"0"},wp=/^\s*\d+/,Mp=/^%/,Np=/[\\^$*+?|[\]().{}]/g;function Tp(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function Ap(t){return t.replace(Np,"\\$&")}function Sp(t){return new RegExp("^(?:"+t.map(Ap).join("|")+")","i")}function kp(t){for(var n={},e=-1,r=t.length;++e<r;)n[t[e].toLowerCase()]=e;return n}function Ep(t,n,e){var r=wp.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Cp(t,n,e){var r=wp.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Pp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function zp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Rp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Dp(t,n,e){var r=wp.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function qp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function Lp(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Up(t,n,e){var r=wp.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Op(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Bp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Fp(t,n,e){var r=wp.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Yp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Ip(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Hp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function jp(t,n,e){var r=wp.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Xp(t,n,e){var r=wp.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Vp(t,n,e){var r=Mp.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Gp(t,n,e){var r=wp.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function $p(t,n,e){var r=wp.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Wp(t,n){return Tp(t.getDate(),n,2)}function Zp(t,n){return Tp(t.getHours(),n,2)}function Qp(t,n){return Tp(t.getHours()%12||12,n,2)}function Kp(t,n){return Tp(1+Nd.count(Hd(t),t),n,3)}function Jp(t,n){return Tp(t.getMilliseconds(),n,3)}function tv(t,n){return Jp(t,n)+"000"}function nv(t,n){return Tp(t.getMonth()+1,n,2)}function ev(t,n){return Tp(t.getMinutes(),n,2)}function rv(t,n){return Tp(t.getSeconds(),n,2)}function iv(t){var n=t.getDay();return 0===n?7:n}function ov(t,n){return Tp(Sd.count(Hd(t)-1,t),n,2)}function av(t,n){var e=t.getDay();return t=e>=4||0===e?Pd(t):Pd.ceil(t),Tp(Pd.count(Hd(t),t)+(4===Hd(t).getDay()),n,2)}function uv(t){return t.getDay()}function cv(t,n){return Tp(kd.count(Hd(t)-1,t),n,2)}function fv(t,n){return Tp(t.getFullYear()%100,n,2)}function sv(t,n){return Tp(t.getFullYear()%1e4,n,4)}function lv(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+Tp(n/60|0,"0",2)+Tp(n%60,"0",2)}function hv(t,n){return Tp(t.getUTCDate(),n,2)}function dv(t,n){return Tp(t.getUTCHours(),n,2)}function pv(t,n){return Tp(t.getUTCHours()%12||12,n,2)}function vv(t,n){return Tp(1+Wd.count(pp(t),t),n,3)}function gv(t,n){return Tp(t.getUTCMilliseconds(),n,3)}function yv(t,n){return gv(t,n)+"000"}function _v(t,n){return Tp(t.getUTCMonth()+1,n,2)}function bv(t,n){return Tp(t.getUTCMinutes(),n,2)}function mv(t,n){return Tp(t.getUTCSeconds(),n,2)}function xv(t){var n=t.getUTCDay();return 0===n?7:n}function wv(t,n){return Tp(Kd.count(pp(t)-1,t),n,2)}function Mv(t,n){var e=t.getUTCDay();return t=e>=4||0===e?ep(t):ep.ceil(t),Tp(ep.count(pp(t),t)+(4===pp(t).getUTCDay()),n,2)}function Nv(t){return t.getUTCDay()}function Tv(t,n){return Tp(Jd.count(pp(t)-1,t),n,2)}function Av(t,n){return Tp(t.getUTCFullYear()%100,n,2)}function Sv(t,n){return Tp(t.getUTCFullYear()%1e4,n,4)}function kv(){return"+0000"}function Ev(){return"%"}function Cv(t){return+t}function Pv(t){return Math.floor(+t/1e3)}function zv(n){return mp=bp(n),t.timeFormat=mp.format,t.timeParse=mp.parse,t.utcFormat=mp.utcFormat,t.utcParse=mp.utcParse,mp}zv({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Rv=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat("%Y-%m-%dT%H:%M:%S.%LZ");var Dv=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse("%Y-%m-%dT%H:%M:%S.%LZ"),qv=1e3,Lv=60*qv,Uv=60*Lv,Ov=24*Uv,Bv=7*Ov,Fv=30*Ov,Yv=365*Ov;function Iv(t){return new Date(t)}function Hv(t){return t instanceof Date?+t:+new Date(+t)}function jv(t,n,r,i,o,a,u,c,f){var s=Vh(Bh,Bh),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),v=f("%I:%M"),g=f("%I %p"),y=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y"),x=[[u,1,qv],[u,5,5*qv],[u,15,15*qv],[u,30,30*qv],[a,1,Lv],[a,5,5*Lv],[a,15,15*Lv],[a,30,30*Lv],[o,1,Uv],[o,3,3*Uv],[o,6,6*Uv],[o,12,12*Uv],[i,1,Ov],[i,2,2*Ov],[r,1,Bv],[n,1,Fv],[n,3,3*Fv],[t,1,Yv]];function M(e){return(u(e)<e?d:a(e)<e?p:o(e)<e?v:i(e)<e?g:n(e)<e?r(e)<e?y:_:t(e)<e?b:m)(e)}function N(n,r,i,o){if(null==n&&(n=10),"number"==typeof n){var a=Math.abs(i-r)/n,u=e(function(t){return t[2]}).right(x,a);u===x.length?(o=w(r/Yv,i/Yv,n),n=t):u?(o=(u=x[a/x[u-1][2]<x[u][2]/a?u-1:u])[1],n=u[0]):(o=Math.max(w(r,i,n),1),n=c)}return null==o?n:n.every(o)}return s.invert=function(t){return new Date(l(t))},s.domain=function(t){return arguments.length?h(zh.call(t,Hv)):h().map(Iv)},s.ticks=function(t,n){var e,r=h(),i=r[0],o=r[r.length-1],a=o<i;return a&&(e=i,i=o,o=e),e=(e=N(t,i,o,n))?e.range(i,o+1):[],a?e.reverse():e},s.tickFormat=function(t,n){return null==n?M:f(n)},s.nice=function(t,n){var e=h();return(t=N(t,e[0],e[e.length-1],n))?h(Wh(e,t)):s},s.copy=function(){return jh(s,jv(t,n,r,i,o,a,u,c,f))},s}function Xv(){var t,n,e,r,i,o=0,a=1,u=Bh,c=!1;function f(n){return isNaN(n=+n)?i:u(0===e?.5:(n=(r(n)-t)*e,c?Math.max(0,Math.min(1,n)):n))}return f.domain=function(i){return arguments.length?(t=r(o=+i[0]),n=r(a=+i[1]),e=t===n?0:1/(n-t),f):[o,a]},f.clamp=function(t){return arguments.length?(c=!!t,f):c},f.interpolator=function(t){return arguments.length?(u=t,f):u},f.unknown=function(t){return arguments.length?(i=t,f):i},function(i){return r=i,t=i(o),n=i(a),e=t===n?0:1/(n-t),f}}function Vv(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Gv(){var t=fd(Xv());return t.copy=function(){return Vv(t,Gv()).exponent(t.exponent())},Ch.apply(t,arguments)}function $v(){var t,n,e,r,i,o,a,u=0,c=.5,f=1,s=Bh,l=!1;function h(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-n)*(t<n?r:i),s(l?Math.max(0,Math.min(1,t)):t))}return h.domain=function(a){return arguments.length?(t=o(u=+a[0]),n=o(c=+a[1]),e=o(f=+a[2]),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),h):[u,c,f]},h.clamp=function(t){return arguments.length?(l=!!t,h):l},h.interpolator=function(t){return arguments.length?(s=t,h):s},h.unknown=function(t){return arguments.length?(a=t,h):a},function(a){return o=a,t=a(u),n=a(c),e=a(f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),h}}function Wv(){var t=fd($v());return t.copy=function(){return Vv(t,Wv()).exponent(t.exponent())},Ch.apply(t,arguments)}function Zv(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}var Qv=Zv("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Kv=Zv("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),Jv=Zv("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),tg=Zv("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),ng=Zv("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),eg=Zv("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),rg=Zv("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),ig=Zv("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),og=Zv("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),ag=Zv("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");function ug(t){return pe(t[t.length-1])}var cg=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Zv),fg=ug(cg),sg=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Zv),lg=ug(sg),hg=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Zv),dg=ug(hg),pg=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Zv),vg=ug(pg),gg=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Zv),yg=ug(gg),_g=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Zv),bg=ug(_g),mg=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Zv),xg=ug(mg),wg=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Zv),Mg=ug(wg),Ng=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Zv),Tg=ug(Ng),Ag=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Zv),Sg=ug(Ag),kg=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Zv),Eg=ug(kg),Cg=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Zv),Pg=ug(Cg),zg=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Zv),Rg=ug(zg),Dg=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Zv),qg=ug(Dg),Lg=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Zv),Ug=ug(Lg),Og=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Zv),Bg=ug(Og),Fg=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Zv),Yg=ug(Fg),Ig=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Zv),Hg=ug(Ig),jg=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Zv),Xg=ug(jg),Vg=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Zv),Gg=ug(Vg),$g=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Zv),Wg=ug($g),Zg=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Zv),Qg=ug(Zg),Kg=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Zv),Jg=ug(Kg),ty=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Zv),ny=ug(ty),ey=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Zv),ry=ug(ey),iy=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Zv),oy=ug(iy),ay=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Zv),uy=ug(ay);var cy=Qe(ee(300,.5,0),ee(-240,.5,1)),fy=Qe(ee(-100,.75,.35),ee(80,1.5,.8)),sy=Qe(ee(260,.75,.35),ee(80,1.5,.8)),ly=ee();var hy=_n(),dy=Math.PI/3,py=2*Math.PI/3;function vy(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var gy=vy(Zv("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),yy=vy(Zv("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),_y=vy(Zv("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),by=vy(Zv("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601.4.9.0a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function my(t){return function(){return t}}var xy=Math.abs,wy=Math.atan2,My=Math.cos,Ny=Math.max,Ty=Math.min,Ay=Math.sin,Sy=Math.sqrt,ky=1e-12,Ey=Math.PI,Cy=Ey/2,Py=2*Ey;function zy(t){return t>=1?Cy:t<=-1?-Cy:Math.asin(t)}function Ry(t){return t.innerRadius}function Dy(t){return t.outerRadius}function qy(t){return t.startAngle}function Ly(t){return t.endAngle}function Uy(t){return t&&t.padAngle}function Oy(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/Sy(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,v=r+l,g=(h+p)/2,y=(d+v)/2,_=p-h,b=v-d,m=_*_+b*b,x=i-o,w=h*v-p*d,M=(b<0?-1:1)*Sy(Ny(0,x*x*m-w*w)),N=(w*b-_*M)/m,T=(-w*_-b*M)/m,A=(w*b+_*M)/m,S=(-w*_+b*M)/m,k=N-g,E=T-y,C=A-g,P=S-y;return k*k+E*E>C*C+P*P&&(N=A,T=S),{cx:N,cy:T,x01:-s,y01:-l,x11:N*(i/x-1),y11:T*(i/x-1)}}function By(t){this._context=t}function Fy(t){return new By(t)}function Yy(t){return t[0]}function Iy(t){return t[1]}function Hy(){var t=Yy,n=Iy,e=my(!0),r=null,i=Fy,o=null;function a(a){var u,c,f,s=a.length,l=!1;for(null==r&&(o=i(f=no())),u=0;u<=s;++u)!(u<s&&e(c=a[u],u,a))===l&&((l=!l)?o.lineStart():o.lineEnd()),l&&o.point(+t(c,u,a),+n(c,u,a));if(f)return o=null,f+""||null}return a.x=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),a):t},a.y=function(t){return arguments.length?(n="function"==typeof t?t:my(+t),a):n},a.defined=function(t){return arguments.length?(e="function"==typeof t?t:my(!!t),a):e},a.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),a):i},a.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),a):r},a}function jy(){var t=Yy,n=null,e=my(0),r=Iy,i=my(!0),o=null,a=Fy,u=null;function c(c){var f,s,l,h,d,p=c.length,v=!1,g=new Array(p),y=new Array(p);for(null==o&&(u=a(d=no())),f=0;f<=p;++f){if(!(f<p&&i(h=c[f],f,c))===v)if(v=!v)s=f,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),l=f-1;l>=s;--l)u.point(g[l],y[l]);u.lineEnd(),u.areaEnd()}v&&(g[f]=+t(h,f,c),y[f]=+e(h,f,c),u.point(n?+n(h,f,c):g[f],r?+r(h,f,c):y[f]))}if(d)return u=null,d+""||null}function f(){return Hy().defined(i).curve(a).context(o)}return c.x=function(e){return arguments.length?(t="function"==typeof e?e:my(+e),n=null,c):t},c.x0=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),c):t},c.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:my(+t),c):n},c.y=function(t){return arguments.length?(e="function"==typeof t?t:my(+t),r=null,c):e},c.y0=function(t){return arguments.length?(e="function"==typeof t?t:my(+t),c):e},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:my(+t),c):r},c.lineX0=c.lineY0=function(){return f().x(t).y(e)},c.lineY1=function(){return f().x(t).y(r)},c.lineX1=function(){return f().x(n).y(e)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:my(!!t),c):i},c.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),c):a},c.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),c):o},c}function Xy(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function Vy(t){return t}By.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Gy=Wy(Fy);function $y(t){this._curve=t}function Wy(t){function n(n){return new $y(t(n))}return n._curve=t,n}function Zy(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Wy(t)):n()._curve},t}function Qy(){return Zy(Hy().curve(Gy))}function Ky(){var t=jy().curve(Gy),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Zy(e())},delete t.lineX0,t.lineEndAngle=function(){return Zy(r())},delete t.lineX1,t.lineInnerRadius=function(){return Zy(i())},delete t.lineY0,t.lineOuterRadius=function(){return Zy(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Wy(t)):n()._curve},t}function Jy(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}$y.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var t_=Array.prototype.slice;function n_(t){return t.source}function e_(t){return t.target}function r_(t){var n=n_,e=e_,r=Yy,i=Iy,o=null;function a(){var a,u=t_.call(arguments),c=n.apply(this,u),f=e.apply(this,u);if(o||(o=a=no()),t(o,+r.apply(this,(u[0]=c,u)),+i.apply(this,u),+r.apply(this,(u[0]=f,u)),+i.apply(this,u)),a)return o=null,a+""||null}return a.source=function(t){return arguments.length?(n=t,a):n},a.target=function(t){return arguments.length?(e=t,a):e},a.x=function(t){return arguments.length?(r="function"==typeof t?t:my(+t),a):r},a.y=function(t){return arguments.length?(i="function"==typeof t?t:my(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a}function i_(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function o_(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function a_(t,n,e,r,i){var o=Jy(n,e),a=Jy(n,e=(e+i)/2),u=Jy(r,e),c=Jy(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],u[0],u[1],c[0],c[1])}var u_={draw:function(t,n){var e=Math.sqrt(n/Ey);t.moveTo(e,0),t.arc(0,0,e,0,Py)}},c_={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},f_=Math.sqrt(1/3),s_=2*f_,l_={draw:function(t,n){var e=Math.sqrt(n/s_),r=e*f_;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},h_=Math.sin(Ey/10)/Math.sin(7*Ey/10),d_=Math.sin(Py/10)*h_,p_=-Math.cos(Py/10)*h_,v_={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=d_*e,i=p_*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var a=Py*o/5,u=Math.cos(a),c=Math.sin(a);t.lineTo(c*e,-u*e),t.lineTo(u*r-c*i,c*r+u*i)}t.closePath()}},g_={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},y_=Math.sqrt(3),__={draw:function(t,n){var e=-Math.sqrt(n/(3*y_));t.moveTo(0,2*e),t.lineTo(-y_*e,-e),t.lineTo(y_*e,-e),t.closePath()}},b_=Math.sqrt(3)/2,m_=1/Math.sqrt(12),x_=3*(m_/2+1),w_={draw:function(t,n){var e=Math.sqrt(n/x_),r=e/2,i=e*m_,o=r,a=e*m_+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(-.5*r-b_*i,b_*r+-.5*i),t.lineTo(-.5*o-b_*a,b_*o+-.5*a),t.lineTo(-.5*u-b_*c,b_*u+-.5*c),t.lineTo(-.5*r+b_*i,-.5*i-b_*r),t.lineTo(-.5*o+b_*a,-.5*a-b_*o),t.lineTo(-.5*u+b_*c,-.5*c-b_*u),t.closePath()}},M_=[u_,c_,l_,g_,v_,__,w_];function N_(){}function T_(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function A_(t){this._context=t}function S_(t){this._context=t}function k_(t){this._context=t}function E_(t,n){this._basis=new A_(t),this._beta=n}A_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:T_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:T_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},S_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:T_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},k_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:T_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},E_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var C_=function t(n){function e(t){return 1===n?new A_(t):new E_(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function P_(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function z_(t,n){this._context=t,this._k=(1-n)/6}z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:P_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:P_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var R_=function t(n){function e(t){return new z_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function D_(t,n){this._context=t,this._k=(1-n)/6}D_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:P_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var q_=function t(n){function e(t){return new D_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function L_(t,n){this._context=t,this._k=(1-n)/6}L_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:P_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var U_=function t(n){function e(t){return new L_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function O_(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>ky){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>ky){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function B_(t,n){this._context=t,this._alpha=n}B_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:O_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var F_=function t(n){function e(t){return n?new B_(t,n):new z_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Y_(t,n){this._context=t,this._alpha=n}Y_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:O_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var I_=function t(n){function e(t){return n?new Y_(t,n):new D_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function H_(t,n){this._context=t,this._alpha=n}H_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:O_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var j_=function t(n){function e(t){return n?new H_(t,n):new L_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function X_(t){this._context=t}function V_(t){return t<0?-1:1}function G_(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(V_(o)+V_(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function $_(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function W_(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function Z_(t){this._context=t}function Q_(t){this._context=new K_(t)}function K_(t){this._context=t}function J_(t){this._context=t}function tb(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,a[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,a[n]-=e*a[n-1];for(i[r-1]=a[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)o[n]=2*t[n+1]-i[n+1];return[i,o]}function nb(t,n){this._context=t,this._t=n}function eb(t,n){if((i=t.length)>1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o<i;++o)for(r=a,a=t[n[o]],e=0;e<u;++e)a[e][1]+=a[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function rb(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function ib(t,n){return t[n]}function ob(t){var n=t.map(ab);return rb(t).sort(function(t,e){return n[t]-n[e]})}function ab(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++e<i;)(n=+t[e][1])>o&&(o=n,r=e);return r}function ub(t){var n=t.map(cb);return rb(t).sort(function(t,e){return n[t]-n[e]})}function cb(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}function fb(t){return function(){return t}}function sb(t){return t[0]}function lb(t){return t[1]}function hb(){this._=null}function db(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function pb(t,n){var e=n,r=n.R,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function vb(t,n){var e=n,r=n.L,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function gb(t){for(;t.L;)t=t.L;return t}function yb(t,n,e,r){var i=[null,null],o=Yb.push(i)-1;return i.left=t,i.right=n,e&&bb(i,t,n,e),r&&bb(i,n,t,r),Bb[t.index].halfedges.push(o),Bb[n.index].halfedges.push(o),i}function _b(t,n,e){var r=[n,e];return r.left=t,r}function bb(t,n,e,r){t[0]||t[1]?t.left===e?t[1]=r:t[0]=r:(t[0]=r,t.left=n,t.right=e)}function mb(t,n,e,r,i){var o,a=t[0],u=t[1],c=a[0],f=a[1],s=0,l=1,h=u[0]-c,d=u[1]-f;if(o=n-c,h||!(o>0)){if(o/=h,h<0){if(o<s)return;o<l&&(l=o)}else if(h>0){if(o>l)return;o>s&&(s=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>s&&(s=o)}else if(h>0){if(o<s)return;o<l&&(l=o)}if(o=e-f,d||!(o>0)){if(o/=d,d<0){if(o<s)return;o<l&&(l=o)}else if(d>0){if(o>l)return;o>s&&(s=o)}if(o=i-f,d||!(o<0)){if(o/=d,d<0){if(o>l)return;o>s&&(s=o)}else if(d>0){if(o<s)return;o<l&&(l=o)}return!(s>0||l<1)||(s>0&&(t[0]=[c+s*h,f+s*d]),l<1&&(t[1]=[c+l*h,f+l*d]),!0)}}}}}function xb(t,n,e,r,i){var o=t[1];if(o)return!0;var a,u,c=t[0],f=t.left,s=t.right,l=f[0],h=f[1],d=s[0],p=s[1],v=(l+d)/2,g=(h+p)/2;if(p===h){if(v<n||v>=r)return;if(l>d){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]<e)return}else c=[v,i];o=[v,e]}}else if(u=g-(a=(l-d)/(p-h))*v,a<-1||a>1)if(l>d){if(c){if(c[1]>=i)return}else c=[(e-u)/a,e];o=[(i-u)/a,i]}else{if(c){if(c[1]<e)return}else c=[(i-u)/a,i];o=[(e-u)/a,e]}else if(h<p){if(c){if(c[0]>=r)return}else c=[n,a*n+u];o=[r,a*r+u]}else{if(c){if(c[0]<n)return}else c=[r,a*r+u];o=[n,a*n+u]}return t[0]=c,t[1]=o,!0}function wb(t,n){var e=t.site,r=n.left,i=n.right;return e===i&&(i=r,r=e),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(e===r?(r=n[1],i=n[0]):(r=n[0],i=n[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function Mb(t,n){return n[+(n.left!==t.site)]}function Nb(t,n){return n[+(n.left===t.site)]}X_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},Z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:W_(this,this._t0,$_(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,W_(this,$_(this,e=G_(this,t,n)),e);break;default:W_(this,this._t0,e=G_(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(Q_.prototype=Object.create(Z_.prototype)).point=function(t,n){Z_.prototype.point.call(this,n,t)},K_.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},J_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=tb(t),i=tb(n),o=0,a=1;a<e;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],n[a]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},nb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}},hb.prototype={constructor:hb,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=gb(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(pb(this,e),e=(t=e).U),e.C=!1,r.C=!0,vb(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(vb(this,e),e=(t=e).U),e.C=!1,r.C=!0,pb(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,a=t.R;if(e=o?a?gb(a):o:a,i?i.L===t?i.L=e:i.R=e:this._=e,o&&a?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==a?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=a,a.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,pb(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,vb(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,pb(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,vb(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,pb(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,vb(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var Tb,Ab=[];function Sb(){db(this),this.x=this.y=this.arc=this.site=this.cy=null}function kb(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,o=e.site;if(r!==o){var a=i[0],u=i[1],c=r[0]-a,f=r[1]-u,s=o[0]-a,l=o[1]-u,h=2*(c*l-f*s);if(!(h>=-Hb)){var d=c*c+f*f,p=s*s+l*l,v=(l*d-f*p)/h,g=(c*p-s*d)/h,y=Ab.pop()||new Sb;y.arc=t,y.site=i,y.x=v+a,y.y=(y.cy=g+u)+Math.sqrt(v*v+g*g),t.circle=y;for(var _=null,b=Fb._;b;)if(y.y<b.y||y.y===b.y&&y.x<=b.x){if(!b.L){_=b.P;break}b=b.L}else{if(!b.R){_=b;break}b=b.R}Fb.insert(_,y),_||(Tb=y)}}}}function Eb(t){var n=t.circle;n&&(n.P||(Tb=n.N),Fb.remove(n),Ab.push(n),db(n),t.circle=null)}var Cb=[];function Pb(){db(this),this.edge=this.site=this.circle=null}function zb(t){var n=Cb.pop()||new Pb;return n.site=t,n}function Rb(t){Eb(t),Ob.remove(t),Cb.push(t),db(t)}function Db(t){var n=t.circle,e=n.x,r=n.cy,i=[e,r],o=t.P,a=t.N,u=[t];Rb(t);for(var c=o;c.circle&&Math.abs(e-c.circle.x)<Ib&&Math.abs(r-c.circle.cy)<Ib;)o=c.P,u.unshift(c),Rb(c),c=o;u.unshift(c),Eb(c);for(var f=a;f.circle&&Math.abs(e-f.circle.x)<Ib&&Math.abs(r-f.circle.cy)<Ib;)a=f.N,u.push(f),Rb(f),f=a;u.push(f),Eb(f);var s,l=u.length;for(s=1;s<l;++s)f=u[s],c=u[s-1],bb(f.edge,c.site,f.site,i);c=u[0],(f=u[l-1]).edge=yb(c.site,f.site,null,i),kb(c),kb(f)}function qb(t){for(var n,e,r,i,o=t[0],a=t[1],u=Ob._;u;)if((r=Lb(u,a)-o)>Ib)u=u.L;else{if(!((i=o-Ub(u,a))>Ib)){r>-Ib?(n=u.P,e=u):i>-Ib?(n=u,e=u.N):n=e=u;break}if(!u.R){n=u;break}u=u.R}!function(t){Bb[t.index]={site:t,halfedges:[]}}(t);var c=zb(t);if(Ob.insert(n,c),n||e){if(n===e)return Eb(n),e=zb(n.site),Ob.insert(c,e),c.edge=e.edge=yb(n.site,c.site),kb(n),void kb(e);if(e){Eb(n),Eb(e);var f=n.site,s=f[0],l=f[1],h=t[0]-s,d=t[1]-l,p=e.site,v=p[0]-s,g=p[1]-l,y=2*(h*g-d*v),_=h*h+d*d,b=v*v+g*g,m=[(g*_-d*b)/y+s,(h*b-v*_)/y+l];bb(e.edge,f,p,m),c.edge=yb(f,t,null,m),e.edge=yb(t,p,null,m),kb(n),kb(e)}else c.edge=yb(n.site,c.site)}}function Lb(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var a=t.P;if(!a)return-1/0;var u=(e=a.site)[0],c=e[1],f=c-n;if(!f)return u;var s=u-r,l=1/o-1/f,h=s/f;return l?(-h+Math.sqrt(h*h-2*l*(s*s/(-2*f)-c+f/2+i-o/2)))/l+r:(r+u)/2}function Ub(t,n){var e=t.N;if(e)return Lb(e,n);var r=t.site;return r[1]===n?r[0]:1/0}var Ob,Bb,Fb,Yb,Ib=1e-6,Hb=1e-12;function jb(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function Xb(t,n){return n[1]-t[1]||n[0]-t[0]}function Vb(t,n){var e,r,i,o=t.sort(Xb).pop();for(Yb=[],Bb=new Array(t.length),Ob=new hb,Fb=new hb;;)if(i=Tb,o&&(!i||o[1]<i.y||o[1]===i.y&&o[0]<i.x))o[0]===e&&o[1]===r||(qb(o),e=o[0],r=o[1]),o=t.pop();else{if(!i)break;Db(i.arc)}if(function(){for(var t,n,e,r,i=0,o=Bb.length;i<o;++i)if((t=Bb[i])&&(r=(n=t.halfedges).length)){var a=new Array(r),u=new Array(r);for(e=0;e<r;++e)a[e]=e,u[e]=wb(t,Yb[n[e]]);for(a.sort(function(t,n){return u[n]-u[t]}),e=0;e<r;++e)u[e]=n[a[e]];for(e=0;e<r;++e)n[e]=u[e]}}(),n){var a=+n[0][0],u=+n[0][1],c=+n[1][0],f=+n[1][1];!function(t,n,e,r){for(var i,o=Yb.length;o--;)xb(i=Yb[o],t,n,e,r)&&mb(i,t,n,e,r)&&(Math.abs(i[0][0]-i[1][0])>Ib||Math.abs(i[0][1]-i[1][1])>Ib)||delete Yb[o]}(a,u,c,f),function(t,n,e,r){var i,o,a,u,c,f,s,l,h,d,p,v,g=Bb.length,y=!0;for(i=0;i<g;++i)if(o=Bb[i]){for(a=o.site,u=(c=o.halfedges).length;u--;)Yb[c[u]]||c.splice(u,1);for(u=0,f=c.length;u<f;)p=(d=Nb(o,Yb[c[u]]))[0],v=d[1],l=(s=Mb(o,Yb[c[++u%f]]))[0],h=s[1],(Math.abs(p-l)>Ib||Math.abs(v-h)>Ib)&&(c.splice(u,0,Yb.push(_b(a,d,Math.abs(p-t)<Ib&&r-v>Ib?[t,Math.abs(l-t)<Ib?h:r]:Math.abs(v-r)<Ib&&e-p>Ib?[Math.abs(h-r)<Ib?l:e,r]:Math.abs(p-e)<Ib&&v-n>Ib?[e,Math.abs(l-e)<Ib?h:n]:Math.abs(v-n)<Ib&&p-t>Ib?[Math.abs(h-n)<Ib?l:t,n]:null))-1),++f);f&&(y=!1)}if(y){var _,b,m,x=1/0;for(i=0,y=null;i<g;++i)(o=Bb[i])&&(m=(_=(a=o.site)[0]-t)*_+(b=a[1]-n)*b)<x&&(x=m,y=o);if(y){var w=[t,n],M=[t,r],N=[e,r],T=[e,n];y.halfedges.push(Yb.push(_b(a=y.site,w,M))-1,Yb.push(_b(a,M,N))-1,Yb.push(_b(a,N,T))-1,Yb.push(_b(a,T,w))-1)}}for(i=0;i<g;++i)(o=Bb[i])&&(o.halfedges.length||delete Bb[i])}(a,u,c,f)}this.edges=Yb,this.cells=Bb,Ob=Fb=Yb=Bb=null}function Gb(t){return function(){return t}}function $b(t,n,e){this.target=t,this.type=n,this.transform=e}function Wb(t,n,e){this.k=t,this.x=n,this.y=e}Vb.prototype={constructor:Vb,polygons:function(){var t=this.edges;return this.cells.map(function(n){var e=n.halfedges.map(function(e){return Mb(n,t[e])});return e.data=n.site.data,e})},triangles:function(){var t=[],n=this.edges;return this.cells.forEach(function(e,r){if(o=(i=e.halfedges).length)for(var i,o,a,u=e.site,c=-1,f=n[i[o-1]],s=f.left===u?f.right:f.left;++c<o;)a=s,s=(f=n[i[c]]).left===u?f.right:f.left,a&&s&&r<a.index&&r<s.index&&jb(u,a,s)<0&&t.push([u.data,a.data,s.data])}),t},links:function(){return this.edges.filter(function(t){return t.right}).map(function(t){return{source:t.left.data,target:t.right.data}})},find:function(t,n,e){for(var r,i,o=this,a=o._found||0,u=o.cells.length;!(i=o.cells[a]);)if(++a>=u)return null;var c=t-i.site[0],f=n-i.site[1],s=c*c+f*f;do{i=o.cells[r=a],a=null,i.halfedges.forEach(function(e){var r=o.edges[e],u=r.left;if(u!==i.site&&u||(u=r.right)){var c=t-u[0],f=n-u[1],l=c*c+f*f;l<s&&(s=l,a=u.index)}})}while(null!==a);return o._found=r,null==e||s<=e*e?i.site:null}},Wb.prototype={constructor:Wb,scale:function(t){return 1===t?this:new Wb(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new Wb(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Zb=new Wb(1,0,0);function Qb(t){for(;!t.__zoom;)if(!(t=t.parentNode))return Zb;return t.__zoom}function Kb(){t.event.stopImmediatePropagation()}function Jb(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function tm(){return!t.event.ctrlKey&&!t.event.button}function nm(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function em(){return this.__zoom||Zb}function rm(){return-t.event.deltaY*(1===t.event.deltaMode?.05:t.event.deltaMode?1:.002)}function im(){return navigator.maxTouchPoints||"ontouchstart"in this}function om(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Qb.prototype=Wb.prototype,t.FormatSpecifier=Ba,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>xr&&e.name===n)return new Ur([[t]],yi,n,+r);return null},t.arc=function(){var t=Ry,n=Dy,e=my(0),r=null,i=qy,o=Ly,a=Uy,u=null;function c(){var c,f,s=+t.apply(this,arguments),l=+n.apply(this,arguments),h=i.apply(this,arguments)-Cy,d=o.apply(this,arguments)-Cy,p=xy(d-h),v=d>h;if(u||(u=c=no()),l<s&&(f=l,l=s,s=f),l>ky)if(p>Py-ky)u.moveTo(l*My(h),l*Ay(h)),u.arc(0,0,l,h,d,!v),s>ky&&(u.moveTo(s*My(d),s*Ay(d)),u.arc(0,0,s,d,h,v));else{var g,y,_=h,b=d,m=h,x=d,w=p,M=p,N=a.apply(this,arguments)/2,T=N>ky&&(r?+r.apply(this,arguments):Sy(s*s+l*l)),A=Ty(xy(l-s)/2,+e.apply(this,arguments)),S=A,k=A;if(T>ky){var E=zy(T/s*Ay(N)),C=zy(T/l*Ay(N));(w-=2*E)>ky?(m+=E*=v?1:-1,x-=E):(w=0,m=x=(h+d)/2),(M-=2*C)>ky?(_+=C*=v?1:-1,b-=C):(M=0,_=b=(h+d)/2)}var P=l*My(_),z=l*Ay(_),R=s*My(x),D=s*Ay(x);if(A>ky){var q,L=l*My(b),U=l*Ay(b),O=s*My(m),B=s*Ay(m);if(p<Ey&&(q=function(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<ky))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}(P,z,O,B,L,U,R,D))){var F=P-q[0],Y=z-q[1],I=L-q[0],H=U-q[1],j=1/Ay(function(t){return t>1?0:t<-1?Ey:Math.acos(t)}((F*I+Y*H)/(Sy(F*F+Y*Y)*Sy(I*I+H*H)))/2),X=Sy(q[0]*q[0]+q[1]*q[1]);S=Ty(A,(s-X)/(j-1)),k=Ty(A,(l-X)/(j+1))}}M>ky?k>ky?(g=Oy(O,B,P,z,l,k,v),y=Oy(L,U,R,D,l,k,v),u.moveTo(g.cx+g.x01,g.cy+g.y01),k<A?u.arc(g.cx,g.cy,k,wy(g.y01,g.x01),wy(y.y01,y.x01),!v):(u.arc(g.cx,g.cy,k,wy(g.y01,g.x01),wy(g.y11,g.x11),!v),u.arc(0,0,l,wy(g.cy+g.y11,g.cx+g.x11),wy(y.cy+y.y11,y.cx+y.x11),!v),u.arc(y.cx,y.cy,k,wy(y.y11,y.x11),wy(y.y01,y.x01),!v))):(u.moveTo(P,z),u.arc(0,0,l,_,b,!v)):u.moveTo(P,z),s>ky&&w>ky?S>ky?(g=Oy(R,D,L,U,s,-S,v),y=Oy(P,z,O,B,s,-S,v),u.lineTo(g.cx+g.x01,g.cy+g.y01),S<A?u.arc(g.cx,g.cy,S,wy(g.y01,g.x01),wy(y.y01,y.x01),!v):(u.arc(g.cx,g.cy,S,wy(g.y01,g.x01),wy(g.y11,g.x11),!v),u.arc(0,0,s,wy(g.cy+g.y11,g.cx+g.x11),wy(y.cy+y.y11,y.cx+y.x11),v),u.arc(y.cx,y.cy,S,wy(y.y11,y.x11),wy(y.y01,y.x01),!v))):u.arc(0,0,s,x,m,v):u.lineTo(R,D)}else u.moveTo(0,0);if(u.closePath(),c)return u=null,c+""||null}return c.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-Ey/2;return[My(r)*e,Ay(r)*e]},c.innerRadius=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),c):t},c.outerRadius=function(t){return arguments.length?(n="function"==typeof t?t:my(+t),c):n},c.cornerRadius=function(t){return arguments.length?(e="function"==typeof t?t:my(+t),c):e},c.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:my(+t),c):r},c.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:my(+t),c):i},c.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:my(+t),c):o},c.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:my(+t),c):a},c.context=function(t){return arguments.length?(u=null==t?null:t,c):u},c},t.area=jy,t.areaRadial=Ky,t.ascending=n,t.autoType=function(t){for(var n in t){var e,r,i=t[n].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(e=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;ra&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=e;else i=null;t[n]=i}return t},t.axisBottom=function(t){return F(D,t)},t.axisLeft=function(t){return F(q,t)},t.axisRight=function(t){return F(R,t)},t.axisTop=function(t){return F(z,t)},t.bisect=i,t.bisectLeft=o,t.bisectRight=i,t.bisector=e,t.blob=function(t,n){return fetch(t,n).then(ia)},t.brush=function(){return Yi(Ci)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.brushX=function(){return Yi(ki)},t.brushY=function(){return Yi(Ei)},t.buffer=function(t,n){return fetch(t,n).then(oa)},t.chord=function(){var t=0,n=null,e=null,r=null;function i(i){var o,a,u,c,f,s,l=i.length,h=[],d=g(l),p=[],v=[],y=v.groups=new Array(l),_=new Array(l*l);for(o=0,f=-1;++f<l;){for(a=0,s=-1;++s<l;)a+=i[f][s];h.push(a),p.push(g(l)),o+=a}for(n&&d.sort(function(t,e){return n(h[t],h[e])}),e&&p.forEach(function(t,n){t.sort(function(t,r){return e(i[n][t],i[n][r])})}),c=(o=Gi(0,Vi-t*l)/o)?t:Vi/l,a=0,f=-1;++f<l;){for(u=a,s=-1;++s<l;){var b=d[f],m=p[b][s],x=i[b][m],w=a,M=a+=x*o;_[m*l+b]={index:b,subindex:m,startAngle:w,endAngle:M,value:x}}y[b]={index:b,startAngle:u,endAngle:a,value:h[b]},a+=c}for(f=-1;++f<l;)for(s=f-1;++s<l;){var N=_[s*l+f],T=_[f*l+s];(N.value||T.value)&&v.push(N.value<T.value?{source:T,target:N}:{source:N,target:T})}return r?v.sort(r):v}return i.padAngle=function(n){return arguments.length?(t=Gi(0,n),i):t},i.sortGroups=function(t){return arguments.length?(n=t,i):n},i.sortSubgroups=function(t){return arguments.length?(e=t,i):e},i.sortChords=function(t){return arguments.length?(null==t?r=null:(r=$i(t))._=t,i):r&&r._},i},t.clientPoint=Ot,t.cluster=function(){var t=Nl,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter(function(n){var e=n.children;e?(n.x=function(t){return t.reduce(Tl,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Al,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)});var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.color=pn,t.contourDensity=function(){var t=ko,n=Eo,e=Co,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=bo(20);function l(r){var i=new Float32Array(c*f),l=new Float32Array(c*f);r.forEach(function(r,o,s){var l=+t(r,o,s)+u>>a,h=+n(r,o,s)+u>>a,d=+e(r,o,s);l>=0&&l<c&&h>=0&&h<f&&(i[l+h*c]+=d)}),Ao({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),So({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Ao({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),So({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Ao({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),So({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a);var d=s(i);if(!Array.isArray(d)){var p=T(i);d=w(0,p,d),(d=g(0,Math.floor(p/d)*d,d)).shift()}return To().thresholds(d).size([c,f])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function y(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,l}return l.x=function(n){return arguments.length?(t="function"==typeof n?n:bo(+n),l):t},l.y=function(t){return arguments.length?(n="function"==typeof t?t:bo(+t),l):n},l.weight=function(t){return arguments.length?(e="function"==typeof t?t:bo(+t),l):e},l.size=function(t){if(!arguments.length)return[r,i];var n=Math.ceil(t[0]),e=Math.ceil(t[1]);if(!(n>=0||n>=0))throw new Error("invalid size");return r=n,i=e,y()},l.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),y()},l.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?bo(yo.call(t)):bo(t),l):s},l.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},l},t.contours=To,t.create=function(t){return Rt(Z(t).call(document.documentElement))},t.creator=Z,t.cross=function(t,n,e){var r,i,o,u,c=t.length,f=n.length,s=new Array(c*f);for(null==e&&(e=a),r=o=0;r<c;++r)for(u=t[r],i=0;i<f;++i,++o)s[o]=e(u,n[i]);return s},t.csv=fa,t.csvFormat=jo,t.csvFormatBody=Xo,t.csvFormatRow=Go,t.csvFormatRows=Vo,t.csvFormatValue=$o,t.csvParse=Io,t.csvParseRows=Ho,t.cubehelix=ee,t.curveBasis=function(t){return new A_(t)},t.curveBasisClosed=function(t){return new S_(t)},t.curveBasisOpen=function(t){return new k_(t)},t.curveBundle=C_,t.curveCardinal=R_,t.curveCardinalClosed=q_,t.curveCardinalOpen=U_,t.curveCatmullRom=F_,t.curveCatmullRomClosed=I_,t.curveCatmullRomOpen=j_,t.curveLinear=Fy,t.curveLinearClosed=function(t){return new X_(t)},t.curveMonotoneX=function(t){return new Z_(t)},t.curveMonotoneY=function(t){return new Q_(t)},t.curveNatural=function(t){return new J_(t)},t.curveStep=function(t){return new nb(t,.5)},t.curveStepAfter=function(t){return new nb(t,1)},t.curveStepBefore=function(t){return new nb(t,0)},t.customEvent=kt,t.descending=function(t,n){return n<t?-1:n>t?1:n>=t?0:NaN},t.deviation=f,t.dispatch=I,t.drag=function(){var n,e,r,i,o=Gt,a=$t,u=Wt,c=Zt,f={},s=I("start","drag","end"),l=0,h=0;function d(t){t.on("mousedown.drag",p).filter(c).on("touchstart.drag",y).on("touchmove.drag",_).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(){if(!i&&o.apply(this,arguments)){var u=m("mouse",a.apply(this,arguments),Bt,this,arguments);u&&(Rt(t.event.view).on("mousemove.drag",v,!0).on("mouseup.drag",g,!0),Ht(t.event.view),Yt(),r=!1,n=t.event.clientX,e=t.event.clientY,u("start"))}}function v(){if(It(),!r){var i=t.event.clientX-n,o=t.event.clientY-e;r=i*i+o*o>h}f.mouse("drag")}function g(){Rt(t.event.view).on("mousemove.drag mouseup.drag",null),jt(t.event.view,r),It(),f.mouse("end")}function y(){if(o.apply(this,arguments)){var n,e,r=t.event.changedTouches,i=a.apply(this,arguments),u=r.length;for(n=0;n<u;++n)(e=m(r[n].identifier,i,Ft,this,arguments))&&(Yt(),e("start"))}}function _(){var n,e,r=t.event.changedTouches,i=r.length;for(n=0;n<i;++n)(e=f[r[n].identifier])&&(It(),e("drag"))}function b(){var n,e,r=t.event.changedTouches,o=r.length;for(i&&clearTimeout(i),i=setTimeout(function(){i=null},500),n=0;n<o;++n)(e=f[r[n].identifier])&&(Yt(),e("end"))}function m(n,e,r,i,o){var a,c,h,p=r(e,n),v=s.copy();if(kt(new Vt(d,"beforestart",a,n,l,p[0],p[1],0,0,v),function(){return null!=(t.event.subject=a=u.apply(i,o))&&(c=a.x-p[0]||0,h=a.y-p[1]||0,!0)}))return function t(u){var s,g=p;switch(u){case"start":f[n]=t,s=l++;break;case"end":delete f[n],--l;case"drag":p=r(e,n),s=l}kt(new Vt(d,u,a,n,s,p[0]+c,p[1]+h,p[0]-g[0],p[1]-g[1],v),v.apply,v,[u,i,o])}}return d.filter=function(t){return arguments.length?(o="function"==typeof t?t:Xt(!!t),d):o},d.container=function(t){return arguments.length?(a="function"==typeof t?t:Xt(t),d):a},d.subject=function(t){return arguments.length?(u="function"==typeof t?t:Xt(t),d):u},d.touchable=function(t){return arguments.length?(c="function"==typeof t?t:Xt(!!t),d):c},d.on=function(){var t=s.on.apply(s,arguments);return t===s?d:t},d.clickDistance=function(t){return arguments.length?(h=(t=+t)*t,d):Math.sqrt(h)},d},t.dragDisable=Ht,t.dragEnable=jt,t.dsv=function(t,n,e,r){3===arguments.length&&"function"==typeof e&&(r=e,e=void 0);var i=Fo(t);return ua(n,e).then(function(t){return i.parse(t,r)})},t.dsvFormat=Fo,t.easeBack=si,t.easeBackIn=ci,t.easeBackInOut=si,t.easeBackOut=fi,t.easeBounce=ui,t.easeBounceIn=function(t){return 1-ui(1-t)},t.easeBounceInOut=function(t){return((t*=2)<=1?1-ui(1-t):ui(t-1)+1)/2},t.easeBounceOut=ui,t.easeCircle=Zr,t.easeCircleIn=function(t){return 1-Math.sqrt(1-t*t)},t.easeCircleInOut=Zr,t.easeCircleOut=function(t){return Math.sqrt(1- --t*t)},t.easeCubic=Ir,t.easeCubicIn=function(t){return t*t*t},t.easeCubicInOut=Ir,t.easeCubicOut=function(t){return--t*t*t+1},t.easeElastic=di,t.easeElasticIn=hi,t.easeElasticInOut=pi,t.easeElasticOut=di,t.easeExp=Wr,t.easeExpIn=function(t){return Math.pow(2,10*t-10)},t.easeExpInOut=Wr,t.easeExpOut=function(t){return 1-Math.pow(2,-10*t)},t.easeLinear=function(t){return+t},t.easePoly=Xr,t.easePolyIn=Hr,t.easePolyInOut=Xr,t.easePolyOut=jr,t.easeQuad=Yr,t.easeQuadIn=function(t){return t*t},t.easeQuadInOut=Yr,t.easeQuadOut=function(t){return t*(2-t)},t.easeSin=$r,t.easeSinIn=function(t){return 1-Math.cos(t*Gr)},t.easeSinInOut=$r,t.easeSinOut=function(t){return Math.sin(t*Gr)},t.entries=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},t.extent=s,t.forceCenter=function(t,n){var e;function r(){var r,i,o=e.length,a=0,u=0;for(r=0;r<o;++r)a+=(i=e[r]).x,u+=i.y;for(a=a/o-t,u=u/o-n,r=0;r<o;++r)(i=e[r]).x-=a,i.y-=u}return null==t&&(t=0),null==n&&(n=0),r.initialize=function(t){e=t},r.x=function(n){return arguments.length?(t=+n,r):t},r.y=function(t){return arguments.length?(n=+t,r):n},r},t.forceCollide=function(t){var n,e,r=1,i=1;function o(){for(var t,o,u,c,f,s,l,h=n.length,d=0;d<i;++d)for(o=wa(n,Aa,Sa).visitAfter(a),t=0;t<h;++t)u=n[t],s=e[u.index],l=s*s,c=u.x+u.vx,f=u.y+u.vy,o.visit(p);function p(t,n,e,i,o){var a=t.data,h=t.r,d=s+h;if(!a)return n>c+d||i<c-d||e>f+d||o<f-d;if(a.index>u.index){var p=c-a.x-a.vx,v=f-a.y-a.vy,g=p*p+v*v;g<d*d&&(0===p&&(g+=(p=ya())*p),0===v&&(g+=(v=ya())*v),g=(d-(g=Math.sqrt(g)))/g*r,u.vx+=(p*=g)*(d=(h*=h)/(l+h)),u.vy+=(v*=g)*d,a.vx-=p*(d=1-d),a.vy-=v*d)}}}function a(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function u(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r<o;++r)i=n[r],e[i.index]=+t(i,r,n)}}return"function"!=typeof t&&(t=ga(null==t?1:+t)),o.initialize=function(t){n=t,u()},o.iterations=function(t){return arguments.length?(i=+t,o):i},o.strength=function(t){return arguments.length?(r=+t,o):r},o.radius=function(n){return arguments.length?(t="function"==typeof n?n:ga(+n),u(),o):t},o},t.forceLink=function(t){var n,e,r,i,o,a=ka,u=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},c=ga(30),f=1;function s(r){for(var i=0,a=t.length;i<f;++i)for(var u,c,s,l,h,d,p,v=0;v<a;++v)c=(u=t[v]).source,l=(s=u.target).x+s.vx-c.x-c.vx||ya(),h=s.y+s.vy-c.y-c.vy||ya(),l*=d=((d=Math.sqrt(l*l+h*h))-e[v])/d*r*n[v],h*=d,s.vx-=l*(p=o[v]),s.vy-=h*p,c.vx+=l*(p=1-p),c.vy+=h*p}function l(){if(r){var u,c,f=r.length,s=t.length,l=co(r,a);for(u=0,i=new Array(f);u<s;++u)(c=t[u]).index=u,"object"!=typeof c.source&&(c.source=Ea(l,c.source)),"object"!=typeof c.target&&(c.target=Ea(l,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(u=0,o=new Array(s);u<s;++u)c=t[u],o[u]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);n=new Array(s),h(),e=new Array(s),d()}}function h(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+u(t[e],e,t)}function d(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+c(t[n],n,t)}return null==t&&(t=[]),s.initialize=function(t){r=t,l()},s.links=function(n){return arguments.length?(t=n,l(),s):t},s.id=function(t){return arguments.length?(a=t,s):a},s.iterations=function(t){return arguments.length?(f=+t,s):f},s.strength=function(t){return arguments.length?(u="function"==typeof t?t:ga(+t),h(),s):u},s.distance=function(t){return arguments.length?(c="function"==typeof t?t:ga(+t),d(),s):c},s},t.forceManyBody=function(){var t,n,e,r,i=ga(-30),o=1,a=1/0,u=.81;function c(r){var i,o=t.length,a=wa(t,Ca,Pa).visitAfter(s);for(e=r,i=0;i<o;++i)n=t[i],a.visit(l)}function f(){if(t){var n,e,o=t.length;for(r=new Array(o),n=0;n<o;++n)e=t[n],r[e.index]=+i(e,n,t)}}function s(t){var n,e,i,o,a,u=0,c=0;if(t.length){for(i=o=a=0;a<4;++a)(n=t[a])&&(e=Math.abs(n.value))&&(u+=n.value,c+=e,i+=e*n.x,o+=e*n.y);t.x=i/c,t.y=o/c}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=r[n.data.index]}while(n=n.next)}t.value=u}function l(t,i,c,f){if(!t.value)return!0;var s=t.x-n.x,l=t.y-n.y,h=f-i,d=s*s+l*l;if(h*h/u<d)return d<a&&(0===s&&(d+=(s=ya())*s),0===l&&(d+=(l=ya())*l),d<o&&(d=Math.sqrt(o*d)),n.vx+=s*t.value*e/d,n.vy+=l*t.value*e/d),!0;if(!(t.length||d>=a)){(t.data!==n||t.next)&&(0===s&&(d+=(s=ya())*s),0===l&&(d+=(l=ya())*l),d<o&&(d=Math.sqrt(o*d)));do{t.data!==n&&(h=r[t.data.index]*e/d,n.vx+=s*h,n.vy+=l*h)}while(t=t.next)}}return c.initialize=function(n){t=n,f()},c.strength=function(t){return arguments.length?(i="function"==typeof t?t:ga(+t),f(),c):i},c.distanceMin=function(t){return arguments.length?(o=t*t,c):Math.sqrt(o)},c.distanceMax=function(t){return arguments.length?(a=t*t,c):Math.sqrt(a)},c.theta=function(t){return arguments.length?(u=t*t,c):Math.sqrt(u)},c},t.forceRadial=function(t,n,e){var r,i,o,a=ga(.1);function u(t){for(var a=0,u=r.length;a<u;++a){var c=r[a],f=c.x-n||1e-6,s=c.y-e||1e-6,l=Math.sqrt(f*f+s*s),h=(o[a]-l)*i[a]*t/l;c.vx+=f*h,c.vy+=s*h}}function c(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)o[n]=+t(r[n],n,r),i[n]=isNaN(o[n])?0:+a(r[n],n,r)}}return"function"!=typeof t&&(t=ga(+t)),null==n&&(n=0),null==e&&(e=0),u.initialize=function(t){r=t,c()},u.strength=function(t){return arguments.length?(a="function"==typeof t?t:ga(+t),c(),u):a},u.radius=function(n){return arguments.length?(t="function"==typeof n?n:ga(+n),c(),u):t},u.x=function(t){return arguments.length?(n=+t,u):n},u.y=function(t){return arguments.length?(e=+t,u):e},u},t.forceSimulation=function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=co(),c=hr(s),f=I("tick","end");function s(){l(),f.call("tick",n),e<r&&(c.stop(),f.call("end",n))}function l(r){var c,f,s=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(e+=(o-e)*i,u.each(function(t){t(e)}),c=0;c<s;++c)null==(f=t[c]).fx?f.x+=f.vx*=a:(f.x=f.fx,f.vx=0),null==f.fy?f.y+=f.vy*=a:(f.y=f.fy,f.vy=0);return n}function h(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=za*Math.sqrt(e),o=e*Ra;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function d(n){return n.initialize&&n.initialize(t),n}return null==t&&(t=[]),h(),n={tick:l,restart:function(){return c.restart(s),n},stop:function(){return c.stop(),n},nodes:function(e){return arguments.length?(t=e,h(),u.each(d),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(o=+t,n):o},velocityDecay:function(t){return arguments.length?(a=1-t,n):1-a},force:function(t,e){return arguments.length>1?(null==e?u.remove(t):u.set(t,d(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f<s;++f)(a=(i=n-(u=t[f]).x)*i+(o=e-u.y)*o)<r&&(c=u,r=a);return c},on:function(t,e){return arguments.length>1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=ga(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vx+=(r[o]-i.x)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=ga(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:ga(+t),a(),o):i},o.x=function(n){return arguments.length?(t="function"==typeof n?n:ga(+n),a(),o):t},o},t.forceY=function(t){var n,e,r,i=ga(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vy+=(r[o]-i.y)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=ga(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:ga(+t),a(),o):i},o.y=function(n){return arguments.length?(t="function"==typeof n?n:ga(+n),a(),o):t},o},t.formatDefaultLocale=Ga,t.formatLocale=Va,t.formatSpecifier=Oa,t.geoAlbers=el,t.geoAlbersUsa=function(){var t,n,e,r,i,o,a=el(),u=nl().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=nl().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},s.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),c.precision(t),l()):a.precision()},s.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),c.scale(t),s.translate(a.translate())):a.scale()},s.translate=function(t){if(!arguments.length)return a.translate();var n=a.scale(),o=+t[0],s=+t[1];return e=a.translate(t).clipExtent([[o-.455*n,s-.238*n],[o+.455*n,s+.238*n]]).stream(f),r=u.translate([o-.307*n,s+.201*n]).clipExtent([[o-.425*n+nu,s+.12*n+nu],[o-.214*n-nu,s+.234*n-nu]]).stream(f),i=c.translate([o-.205*n,s+.212*n]).clipExtent([[o-.214*n+nu,s+.166*n+nu],[o-.115*n-nu,s+.234*n-nu]]).stream(f),l()},s.fitExtent=function(t,n){return Is(s,t,n)},s.fitSize=function(t,n){return Hs(s,t,n)},s.fitWidth=function(t,n){return js(s,t,n)},s.fitHeight=function(t,n){return Xs(s,t,n)},s.scale(1070)},t.geoArea=function(t){return Uu.reset(),Cu(t,Ou),2*Uu},t.geoAzimuthalEqualArea=function(){return Qs(ol).scale(124.75).clipAngle(179.999)},t.geoAzimuthalEqualAreaRaw=ol,t.geoAzimuthalEquidistant=function(){return Qs(al).scale(79.4188).clipAngle(179.999)},t.geoAzimuthalEquidistantRaw=al,t.geoBounds=function(t){var n,e,r,i,o,a,u;if(Ju=Ku=-(Zu=Qu=1/0),ic=[],Cu(t,Mc),e=ic.length){for(ic.sort(zc),n=1,o=[r=ic[0]];n<e;++n)Rc(r,(i=ic[n])[0])||Rc(r,i[1])?(Pc(r[0],i[1])>Pc(r[0],r[1])&&(r[1]=i[1]),Pc(i[0],r[1])>Pc(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=Pc(r[1],i[0]))>a&&(a=u,Zu=i[0],Ku=r[1])}return ic=oc=null,Zu===1/0||Qu===1/0?[[NaN,NaN],[NaN,NaN]]:[[Zu,Qu],[Ku,Ju]]},t.geoCentroid=function(t){ac=uc=cc=fc=sc=lc=hc=dc=pc=vc=gc=0,Cu(t,Dc);var n=pc,e=vc,r=gc,i=n*n+e*e+r*r;return i<eu&&(n=lc,e=hc,r=dc,uc<nu&&(n=cc,e=fc,r=sc),(i=n*n+e*e+r*r)<eu)?[NaN,NaN]:[lu(e,n)*uu,wu(r/bu(i))*uu]},t.geoCircle=function(){var t,n,e=Xc([0,0]),r=Xc(90),i=Xc(6),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=uu,e[1]*=uu}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*cu,c=i.apply(this,arguments)*cu;return t=[],n=$c(-a[0]*cu,-a[1]*cu,0).invert,Jc(o,u,c,1),a={type:"Polygon",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e="function"==typeof t?t:Xc([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r="function"==typeof t?t:Xc(+t),a):r},a.precision=function(t){return arguments.length?(i="function"==typeof t?t:Xc(+t),a):i},a},t.geoClipAntimeridian=df,t.geoClipCircle=pf,t.geoClipExtent=function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=yf(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},t.geoClipRectangle=yf,t.geoConicConformal=function(){return Js(sl).scale(109.5).parallels([30,30])},t.geoConicConformalRaw=sl,t.geoConicEqualArea=nl,t.geoConicEqualAreaRaw=tl,t.geoConicEquidistant=function(){return Js(hl).scale(131.154).center([0,13.9389])},t.geoConicEquidistantRaw=hl,t.geoContains=function(t,n){return(t&&Cf.hasOwnProperty(t.type)?Cf[t.type]:zf)(t,n)},t.geoDistance=Ef,t.geoEqualEarth=function(){return Qs(_l).scale(177.158)},t.geoEqualEarthRaw=_l,t.geoEquirectangular=function(){return Qs(ll).scale(152.63)},t.geoEquirectangularRaw=ll,t.geoGnomonic=function(){return Qs(bl).scale(144.049).clipAngle(60)},t.geoGnomonicRaw=bl,t.geoGraticule=Ff,t.geoGraticule10=function(){return Ff()()},t.geoIdentity=function(){var t,n,e,r,i,o,a,u=1,c=0,f=0,s=1,l=1,h=0,d=null,p=1,v=1,g=Bs({point:function(t,n){var e=b([t,n]);this.stream.point(e[0],e[1])}}),y=Yf;function _(){return p=u*s,v=u*l,o=a=null,b}function b(e){var r=e[0]*p,i=e[1]*v;if(h){var o=i*t-r*n;r=r*t+i*n,i=o}return[r+c,i+f]}return b.invert=function(e){var r=e[0]-c,i=e[1]-f;if(h){var o=i*t+r*n;r=r*t-i*n,i=o}return[r/p,i/v]},b.stream=function(t){return o&&a===t?o:o=g(y(a=t))},b.postclip=function(t){return arguments.length?(y=t,d=e=r=i=null,_()):y},b.clipExtent=function(t){return arguments.length?(y=null==t?(d=e=r=i=null,Yf):yf(d=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),_()):null==d?null:[[d,e],[r,i]]},b.scale=function(t){return arguments.length?(u=+t,_()):u},b.translate=function(t){return arguments.length?(c=+t[0],f=+t[1],_()):[c,f]},b.angle=function(e){return arguments.length?(n=yu(h=e%360*cu),t=hu(h),_()):h*uu},b.reflectX=function(t){return arguments.length?(s=t?-1:1,_()):s<0},b.reflectY=function(t){return arguments.length?(l=t?-1:1,_()):l<0},b.fitExtent=function(t,n){return Is(b,t,n)},b.fitSize=function(t,n){return Hs(b,t,n)},b.fitWidth=function(t,n){return js(b,t,n)},b.fitHeight=function(t,n){return Xs(b,t,n)},b},t.geoInterpolate=function(t,n){var e=t[0]*cu,r=t[1]*cu,i=n[0]*cu,o=n[1]*cu,a=hu(r),u=yu(r),c=hu(o),f=yu(o),s=a*hu(e),l=a*yu(e),h=c*hu(i),d=c*yu(i),p=2*wu(bu(Mu(o-r)+a*c*Mu(i-e))),v=yu(p),g=p?function(t){var n=yu(t*=p)/v,e=yu(p-t)/v,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[lu(i,r)*uu,lu(o,bu(r*r+i*i))*uu]}:function(){return[e*uu,r*uu]};return g.distance=p,g},t.geoLength=Af,t.geoMercator=function(){return cl(ul).scale(961/au)},t.geoMercatorRaw=ul,t.geoNaturalEarth1=function(){return Qs(ml).scale(175.295)},t.geoNaturalEarth1Raw=ml,t.geoOrthographic=function(){return Qs(xl).scale(249.5).clipAngle(90+nu)},t.geoOrthographicRaw=xl,t.geoPath=function(t,n){var e,r,i=4.5;function o(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),Cu(t,e(r))),r.result()}return o.area=function(t){return Cu(t,e($f)),$f.result()},o.measure=function(t){return Cu(t,e(Ds)),Ds.result()},o.bounds=function(t){return Cu(t,e(rs)),rs.result()},o.centroid=function(t){return Cu(t,e(ys)),ys.result()},o.projection=function(n){return arguments.length?(e=null==n?(t=null,Yf):(t=n).stream,o):t},o.context=function(t){return arguments.length?(r=null==t?(n=null,new Us):new Ss(n=t),"function"!=typeof i&&r.pointRadius(i),o):n},o.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),o):i},o.projection(t).context(n)},t.geoProjection=Qs,t.geoProjectionMutator=Ks,t.geoRotation=Kc,t.geoStereographic=function(){return Qs(wl).scale(250).clipAngle(142)},t.geoStereographicRaw=wl,t.geoStream=Cu,t.geoTransform=function(t){return{stream:Bs(t)}},t.geoTransverseMercator=function(){var t=cl(Ml),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=Ml,t.gray=function(t,n){return new Bn(t,0,0,null==n?1:n)},t.hcl=Xn,t.hierarchy=kl,t.histogram=function(){var t=v,n=s,e=M;function r(r){var o,a,u=r.length,c=new Array(u);for(o=0;o<u;++o)c[o]=t(r[o],o,r);var f=n(c),s=f[0],l=f[1],h=e(c,s,l);Array.isArray(h)||(h=w(s,l,h),h=g(Math.ceil(s/h)*h,l,h));for(var d=h.length;h[0]<=s;)h.shift(),--d;for(;h[d-1]>l;)h.pop(),--d;var p,v=new Array(d+1);for(o=0;o<=d;++o)(p=v[o]=[]).x0=o>0?h[o-1]:s,p.x1=o<d?h[o]:l;for(o=0;o<u;++o)s<=(a=c[o])&&a<=l&&v[i(h,a,0,d)].push(r[o]);return v}return r.value=function(n){return arguments.length?(t="function"==typeof n?n:p(n),r):t},r.domain=function(t){return arguments.length?(n="function"==typeof t?t:p([t[0],t[1]]),r):n},r.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?p(h.call(t)):p(t),r):e},r},t.hsl=Tn,t.html=pa,t.image=function(t,n){return new Promise(function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t})},t.interpolate=Te,t.interpolateArray=function(t,n){return(ye(n)?ge:_e)(t,n)},t.interpolateBasis=oe,t.interpolateBasisClosed=ae,t.interpolateBlues=Qg,t.interpolateBrBG=fg,t.interpolateBuGn=Sg,t.interpolateBuPu=Eg,t.interpolateCividis=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},t.interpolateCool=sy,t.interpolateCubehelix=Ze,t.interpolateCubehelixDefault=cy,t.interpolateCubehelixLong=Qe,t.interpolateDate=be,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateGnBu=Pg,t.interpolateGreens=Jg,t.interpolateGreys=ny,t.interpolateHcl=Ge,t.interpolateHclLong=$e,t.interpolateHsl=je,t.interpolateHslLong=Xe,t.interpolateHue=function(t,n){var e=fe(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateInferno=_y,t.interpolateLab=function(t,n){var e=le((t=On(t)).l,(n=On(n)).l),r=le(t.a,n.a),i=le(t.b,n.b),o=le(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateMagma=yy,t.interpolateNumber=me,t.interpolateNumberArray=ge,t.interpolateObject=xe,t.interpolateOrRd=Rg,t.interpolateOranges=uy,t.interpolatePRGn=lg,t.interpolatePiYG=dg,t.interpolatePlasma=by,t.interpolatePuBu=Ug,t.interpolatePuBuGn=qg,t.interpolatePuOr=vg,t.interpolatePuRd=Bg,t.interpolatePurples=ry,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return ly.h=360*t-100,ly.s=1.5-1.5*n,ly.l=.8-.9*n,ly+""},t.interpolateRdBu=yg,t.interpolateRdGy=bg,t.interpolateRdPu=Yg,t.interpolateRdYlBu=xg,t.interpolateRdYlGn=Mg,t.interpolateReds=oy,t.interpolateRgb=he,t.interpolateRgbBasis=pe,t.interpolateRgbBasisClosed=ve,t.interpolateRound=Ae,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,hy.r=255*(n=Math.sin(t))*n,hy.g=255*(n=Math.sin(t+dy))*n,hy.b=255*(n=Math.sin(t+py))*n,hy+""},t.interpolateSpectral=Tg,t.interpolateString=Ne,t.interpolateTransformCss=qe,t.interpolateTransformSvg=Le,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=gy,t.interpolateWarm=fy,t.interpolateYlGn=Xg,t.interpolateYlGnBu=Hg,t.interpolateYlOrBr=Gg,t.interpolateYlOrRd=Wg,t.interpolateZoom=Ie,t.interrupt=Pr,t.interval=function(t,n,e){var r=new lr,i=n;return null==n?(r.restart(t,n,e),r):(n=+n,e=null==e?fr():+e,r.restart(function o(a){a+=i,r.restart(o,i+=n,e),t(a)},n,e),r)},t.isoFormat=Rv,t.isoParse=Dv,t.json=function(t,n){return fetch(t,n).then(la)},t.keys=function(t){var n=[];for(var e in t)n.push(e);return n},t.lab=On,t.lch=function(t,n,e,r){return 1===arguments.length?jn(t):new Vn(e,n,t,null==r?1:r)},t.line=Hy,t.lineRadial=Qy,t.linkHorizontal=function(){return r_(i_)},t.linkRadial=function(){var t=r_(a_);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return r_(o_)},t.local=qt,t.map=co,t.matcher=nt,t.max=T,t.mean=function(t,n){var e,r=t.length,i=r,o=-1,a=0;if(null==n)for(;++o<r;)isNaN(e=u(t[o]))?--i:a+=e;else for(;++o<r;)isNaN(e=u(n(t[o],o,t)))?--i:a+=e;if(i)return a/i},t.median=function(t,e){var r,i=t.length,o=-1,a=[];if(null==e)for(;++o<i;)isNaN(r=u(t[o]))||a.push(r);else for(;++o<i;)isNaN(r=u(e(t[o],o,t)))||a.push(r);return N(a.sort(n),.5)},t.merge=A,t.min=S,t.mouse=Bt,t.namespace=W,t.namespaces=$,t.nest=function(){var t,n,e,r=[],i=[];function o(e,i,a,u){if(i>=r.length)return null!=t&&e.sort(t),null!=n?n(e):e;for(var c,f,s,l=-1,h=e.length,d=r[i++],p=co(),v=a();++l<h;)(s=p.get(c=d(f=e[l])+""))?s.push(f):p.set(c,[f]);return p.each(function(t,n){u(v,n,o(t,i,a,u))}),v}return e={object:function(t){return o(t,0,fo,so)},map:function(t){return o(t,0,lo,ho)},entries:function(t){return function t(e,o){if(++o>r.length)return e;var a,u=i[o-1];return null!=n&&o>=r.length?a=e.entries():(a=[],e.each(function(n,e){a.push({key:e,values:t(n,o)})})),null!=u?a.sort(function(t,n){return u(t.key,n.key)}):a}(o(t,0,lo,ho),0)},key:function(t){return r.push(t),e},sortKeys:function(t){return i[r.length-1]=t,e},sortValues:function(n){return t=n,e},rollup:function(t){return n=t,e}}},t.now=fr,t.pack=function(){var t=null,n=1,e=1,r=Wl;function i(i){return i.x=n/2,i.y=e/2,t?i.eachBefore(Kl(t)).eachAfter(Jl(r,.5)).eachBefore(th(1)):i.eachBefore(Kl(Ql)).eachAfter(Jl(Wl,1)).eachAfter(Jl(r,i.r/Math.min(n,e))).eachBefore(th(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=Gl(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:Zl(+t),i):r},i},t.packEnclose=Dl,t.packSiblings=function(t){return Vl(t),t},t.pairs=function(t,n){null==n&&(n=a);for(var e=0,r=t.length-1,i=t[0],o=new Array(r<0?0:r);e<r;)o[e]=n(i,i=t[++e]);return o},t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&eh(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(n,o)),r&&i.eachBefore(nh),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},t.path=no,t.permute=function(t,n){for(var e=n.length,r=new Array(e);e--;)r[e]=t[n[e]];return r},t.pie=function(){var t=Vy,n=Xy,e=null,r=my(0),i=my(Py),o=my(0);function a(a){var u,c,f,s,l,h=a.length,d=0,p=new Array(h),v=new Array(h),g=+r.apply(this,arguments),y=Math.min(Py,Math.max(-Py,i.apply(this,arguments)-g)),_=Math.min(Math.abs(y)/h,o.apply(this,arguments)),b=_*(y<0?-1:1);for(u=0;u<h;++u)(l=v[p[u]=u]=+t(a[u],u,a))>0&&(d+=l);for(null!=n?p.sort(function(t,e){return n(v[t],v[e])}):null!=e&&p.sort(function(t,n){return e(a[t],a[n])}),u=0,f=d?(y-h*b)/d:0;u<h;++u,g=s)c=p[u],s=g+((l=v[c])>0?l*f:0)+b,v[c]={data:a[c],index:u,value:l,startAngle:g,endAngle:s,padAngle:_};return v}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:my(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:my(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:my(+t),a):o},a},t.piecewise=function(t,n){for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e<r;)o[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[n](t-n)}},t.pointRadial=Jy,t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++e<r;)n=i,i=t[e],o+=n[1]*i[0]-n[0]*i[1];return o/2},t.polygonCentroid=function(t){for(var n,e,r=-1,i=t.length,o=0,a=0,u=t[i-1],c=0;++r<i;)n=u,u=t[r],c+=e=n[0]*u[1]-u[0]*n[1],o+=(n[0]+u[0])*e,a+=(n[1]+u[1])*e;return[o/(c*=3),a/c]},t.polygonContains=function(t,n){for(var e,r,i=t.length,o=t[i-1],a=n[0],u=n[1],c=o[0],f=o[1],s=!1,l=0;l<i;++l)e=(o=t[l])[0],(r=o[1])>u!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort(mh),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=xh(r),a=xh(i),u=a[0]===o[0],c=a[a.length-1]===o[o.length-1],f=[];for(n=o.length-1;n>=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n<a.length-c;++n)f.push(t[r[a[n]][2]]);return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r<i;)n=a,e=u,n-=a=(o=t[r])[0],e-=u=o[1],c+=Math.sqrt(n*n+e*e);return c},t.precisionFixed=$a,t.precisionPrefix=Wa,t.precisionRound=Za,t.quadtree=wa,t.quantile=N,t.quantize=function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},t.radialArea=Ky,t.radialLine=Qy,t.randomBates=Sh,t.randomExponential=kh,t.randomIrwinHall=Ah,t.randomLogNormal=Th,t.randomNormal=Nh,t.randomUniform=Mh,t.range=g,t.rgb=_n,t.ribbon=function(){var t=eo,n=ro,e=io,r=oo,i=ao,o=null;function a(){var a,u=Wi.call(arguments),c=t.apply(this,u),f=n.apply(this,u),s=+e.apply(this,(u[0]=c,u)),l=r.apply(this,u)-Xi,h=i.apply(this,u)-Xi,d=s*Ii(l),p=s*Hi(l),v=+e.apply(this,(u[0]=f,u)),g=r.apply(this,u)-Xi,y=i.apply(this,u)-Xi;if(o||(o=a=no()),o.moveTo(d,p),o.arc(0,0,s,l,h),l===g&&h===y||(o.quadraticCurveTo(0,0,v*Ii(g),v*Hi(g)),o.arc(0,0,v,g,y)),o.quadraticCurveTo(0,0,d,p),o.closePath(),a)return o=null,a+""||null}return a.radius=function(t){return arguments.length?(e="function"==typeof t?t:Zi(+t),a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Zi(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Zi(+t),a):i},a.source=function(n){return arguments.length?(t=n,a):t},a.target=function(t){return arguments.length?(n=t,a):n},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a},t.scaleBand=Lh,t.scaleDiverging=function t(){var n=$h($v()(Bh));return n.copy=function(){return Vv(n,t())},Ch.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=ed($v()).domain([.1,1,10]);return n.copy=function(){return Vv(n,t()).base(n.base())},Ch.apply(n,arguments)},t.scaleDivergingPow=Wv,t.scaleDivergingSqrt=function(){return Wv.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=od($v());return n.copy=function(){return Vv(n,t()).constant(n.constant())},Ch.apply(n,arguments)},t.scaleIdentity=function t(n){var e;function r(t){return isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=zh.call(t,Uh),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?zh.call(n,Uh):[0,1],$h(r)},t.scaleImplicit=Dh,t.scaleLinear=function t(){var n=Vh(Bh,Bh);return n.copy=function(){return jh(n,t())},Eh.apply(n,arguments),$h(n)},t.scaleLog=function t(){var n=ed(Xh()).domain([1,10]);return n.copy=function(){return jh(n,t()).base(n.base())},Eh.apply(n,arguments),n},t.scaleOrdinal=qh,t.scalePoint=function(){return function t(n){var e=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,delete n.paddingOuter,n.copy=function(){return t(e())},n}(Lh.apply(null,arguments).paddingInner(1))},t.scalePow=sd,t.scaleQuantile=function t(){var e,r=[],o=[],a=[];function u(){var t=0,n=Math.max(1,o.length);for(a=new Array(n-1);++t<n;)a[t-1]=N(r,t/n);return c}function c(t){return isNaN(t=+t)?e:o[i(a,t)]}return c.invertExtent=function(t){var n=o.indexOf(t);return n<0?[NaN,NaN]:[n>0?a[n-1]:r[0],n<a.length?a[n]:r[r.length-1]]},c.domain=function(t){if(!arguments.length)return r.slice();r=[];for(var e,i=0,o=t.length;i<o;++i)null==(e=t[i])||isNaN(e=+e)||r.push(e);return r.sort(n),u()},c.range=function(t){return arguments.length?(o=Rh.call(t),u()):o.slice()},c.unknown=function(t){return arguments.length?(e=t,c):e},c.quantiles=function(){return a.slice()},c.copy=function(){return t().domain(r).range(o).unknown(e)},Eh.apply(c,arguments)},t.scaleQuantize=function t(){var n,e=0,r=1,o=1,a=[.5],u=[0,1];function c(t){return t<=t?u[i(a,t,0,o)]:n}function f(){var t=-1;for(a=new Array(o);++t<o;)a[t]=((t+1)*r-(t-o)*e)/(o+1);return c}return c.domain=function(t){return arguments.length?(e=+t[0],r=+t[1],f()):[e,r]},c.range=function(t){return arguments.length?(o=(u=Rh.call(t)).length-1,f()):u.slice()},c.invertExtent=function(t){var n=u.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,a[0]]:n>=o?[a[o-1],r]:[a[n-1],a[n]]},c.unknown=function(t){return arguments.length?(n=t,c):c},c.thresholds=function(){return a.slice()},c.copy=function(){return t().domain([e,r]).range(u).unknown(n)},Eh.apply($h(c),arguments)},t.scaleSequential=function t(){var n=$h(Xv()(Bh));return n.copy=function(){return Vv(n,t())},Ch.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=ed(Xv()).domain([1,10]);return n.copy=function(){return Vv(n,t()).base(n.base())},Ch.apply(n,arguments)},t.scaleSequentialPow=Gv,t.scaleSequentialQuantile=function t(){var e=[],r=Bh;function o(t){if(!isNaN(t=+t))return r((i(e,t)-1)/(e.length-1))}return o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var r,i=0,a=t.length;i<a;++i)null==(r=t[i])||isNaN(r=+r)||e.push(r);return e.sort(n),o},o.interpolator=function(t){return arguments.length?(r=t,o):r},o.copy=function(){return t(r).domain(e)},Ch.apply(o,arguments)},t.scaleSequentialSqrt=function(){return Gv.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=od(Xv());return n.copy=function(){return Vv(n,t()).constant(n.constant())},Ch.apply(n,arguments)},t.scaleSqrt=function(){return sd.apply(null,arguments).exponent(.5)},t.scaleSymlog=function t(){var n=od(Xh());return n.copy=function(){return jh(n,t()).constant(n.constant())},Eh.apply(n,arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],o=1;function a(t){return t<=t?r[i(e,t,0,o)]:n}return a.domain=function(t){return arguments.length?(e=Rh.call(t),o=Math.min(e.length,r.length-1),a):e.slice()},a.range=function(t){return arguments.length?(r=Rh.call(t),o=Math.min(e.length,r.length-1),a):r.slice()},a.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},a.unknown=function(t){return arguments.length?(n=t,a):n},a.copy=function(){return t().domain(e).range(r).unknown(n)},Eh.apply(a,arguments)},t.scaleTime=function(){return Eh.apply(jv(Hd,Yd,Sd,Nd,wd,md,_d,pd,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return Eh.apply(jv(pp,hp,Kd,Wd,Gd,Xd,_d,pd,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scan=function(t,e){if(r=t.length){var r,i,o=0,a=0,u=t[a];for(null==e&&(e=n);++o<r;)(e(i=t[o],u)<0||0!==e(u,u))&&(u=i,a=o);return 0===e(u,u)?a:void 0}},t.schemeAccent=Kv,t.schemeBlues=Zg,t.schemeBrBG=cg,t.schemeBuGn=Ag,t.schemeBuPu=kg,t.schemeCategory10=Qv,t.schemeDark2=Jv,t.schemeGnBu=Cg,t.schemeGreens=Kg,t.schemeGreys=ty,t.schemeOrRd=zg,t.schemeOranges=ay,t.schemePRGn=sg,t.schemePaired=tg,t.schemePastel1=ng,t.schemePastel2=eg,t.schemePiYG=hg,t.schemePuBu=Lg,t.schemePuBuGn=Dg,t.schemePuOr=pg,t.schemePuRd=Og,t.schemePurples=ey,t.schemeRdBu=gg,t.schemeRdGy=_g,t.schemeRdPu=Fg,t.schemeRdYlBu=mg,t.schemeRdYlGn=wg,t.schemeReds=iy,t.schemeSet1=rg,t.schemeSet2=ig,t.schemeSet3=og,t.schemeSpectral=Ng,t.schemeTableau10=ag,t.schemeYlGn=jg,t.schemeYlGnBu=Ig,t.schemeYlOrBr=Vg,t.schemeYlOrRd=$g,t.select=Rt,t.selectAll=function(t){return"string"==typeof t?new Pt([document.querySelectorAll(t)],[document.documentElement]):new Pt([null==t?[]:t],Ct)},t.selection=zt,t.selector=K,t.selectorAll=tt,t.set=go,t.shuffle=function(t,n,e){for(var r,i,o=(null==e?t.length:e)-(n=null==n?0:+n);o;)i=Math.random()*o--|0,r=t[o+n],t[o+n]=t[i+n],t[i+n]=r;return t},t.stack=function(){var t=my([]),n=rb,e=eb,r=ib;function i(i){var o,a,u=t.apply(this,arguments),c=i.length,f=u.length,s=new Array(f);for(o=0;o<f;++o){for(var l,h=u[o],d=s[o]=new Array(c),p=0;p<c;++p)d[p]=l=[0,+r(i[p],h,p,i)],l.data=i[p];d.key=h}for(o=0,a=n(s);o<f;++o)s[a[o]].index=o;return e(s,a),s}return i.keys=function(n){return arguments.length?(t="function"==typeof n?n:my(t_.call(n)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:my(+t),i):r},i.order=function(t){return arguments.length?(n=null==t?rb:"function"==typeof t?t:my(t_.call(t)),i):n},i.offset=function(t){return arguments.length?(e=null==t?eb:t,i):e},i},t.stackOffsetDiverging=function(t,n){if((u=t.length)>0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c<f;++c)for(o=a=0,e=0;e<u;++e)(i=(r=t[n[e]][c])[1]-r[0])>0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o<a;++o){for(i=e=0;e<r;++e)i+=t[e][o][1]||0;if(i)for(e=0;e<r;++e)t[e][o][1]/=i}eb(t,n)}},t.stackOffsetNone=eb,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r<o;++r){for(var a=0,u=0;a<e;++a)u+=t[a][r][1]||0;i[r][1]+=i[r][0]=-u/2}eb(t,n)}},t.stackOffsetWiggle=function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a<r;++a){for(var u=0,c=0,f=0;u<i;++u){for(var s=t[n[u]],l=s[a][1]||0,h=(l-(s[a-1][1]||0))/2,d=0;d<u;++d){var p=t[n[d]];h+=(p[a][1]||0)-(p[a-1][1]||0)}c+=l,f+=h*l}e[a-1][1]+=e[a-1][0]=o,c&&(o-=f/c)}e[a-1][1]+=e[a-1][0]=o,eb(t,n)}},t.stackOrderAppearance=ob,t.stackOrderAscending=ub,t.stackOrderDescending=function(t){return ub(t).reverse()},t.stackOrderInsideOut=function(t){var n,e,r=t.length,i=t.map(cb),o=ob(t),a=0,u=0,c=[],f=[];for(n=0;n<r;++n)e=o[n],a<u?(a+=i[e],c.push(e)):(u+=i[e],f.push(e));return f.reverse().concat(c)},t.stackOrderNone=rb,t.stackOrderReverse=function(t){return rb(t).reverse()},t.stratify=function(){var t=ah,n=uh;function e(e){var r,i,o,a,u,c,f,s=e.length,l=new Array(s),h={};for(i=0;i<s;++i)r=e[i],u=l[i]=new zl(r),null!=(c=t(r,i,e))&&(c+="")&&(h[f=rh+(u.id=c)]=f in h?oh:u);for(i=0;i<s;++i)if(u=l[i],null!=(c=n(e[i],i,e))&&(c+="")){if(!(a=h[rh+c]))throw new Error("missing: "+c);if(a===oh)throw new Error("ambiguous: "+c);a.children?a.children.push(u):a.children=[u],u.parent=a}else{if(o)throw new Error("multiple roots");o=u}if(!o)throw new Error("no root");if(o.parent=ih,o.eachBefore(function(t){t.depth=t.parent.depth+1,--s}).eachBefore(Pl),o.parent=null,s>0)throw new Error("cycle");return o}return e.id=function(n){return arguments.length?(t=$l(n),e):t},e.parentId=function(t){return arguments.length?(n=$l(t),e):n},e},t.style=ft,t.sum=function(t,n){var e,r=t.length,i=-1,o=0;if(null==n)for(;++i<r;)(e=+t[i])&&(o+=e);else for(;++i<r;)(e=+n(t[i],i,t))&&(o+=e);return o},t.svg=va,t.symbol=function(){var t=my(u_),n=my(64),e=null;function r(){var r;if(e||(e=r=no()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),r)return e=null,r+""||null}return r.type=function(n){return arguments.length?(t="function"==typeof n?n:my(n),r):t},r.size=function(t){return arguments.length?(n="function"==typeof t?t:my(+t),r):n},r.context=function(t){return arguments.length?(e=null==t?null:t,r):e},r},t.symbolCircle=u_,t.symbolCross=c_,t.symbolDiamond=l_,t.symbolSquare=g_,t.symbolStar=v_,t.symbolTriangle=__,t.symbolWye=w_,t.symbols=M_,t.text=ua,t.thresholdFreedmanDiaconis=function(t,e,r){return t=d.call(t,u).sort(n),Math.ceil((r-e)/(2*(N(t,.75)-N(t,.25))*Math.pow(t.length,-1/3)))},t.thresholdScott=function(t,n,e){return Math.ceil((e-n)/(3.5*f(t)*Math.pow(t.length,-1/3)))},t.thresholdSturges=M,t.tickFormat=Gh,t.tickIncrement=x,t.tickStep=w,t.ticks=m,t.timeDay=Nd,t.timeDays=Td,t.timeFormatDefaultLocale=zv,t.timeFormatLocale=bp,t.timeFriday=zd,t.timeFridays=Bd,t.timeHour=wd,t.timeHours=Md,t.timeInterval=dd,t.timeMillisecond=pd,t.timeMilliseconds=vd,t.timeMinute=md,t.timeMinutes=xd,t.timeMonday=kd,t.timeMondays=qd,t.timeMonth=Yd,t.timeMonths=Id,t.timeSaturday=Rd,t.timeSaturdays=Fd,t.timeSecond=_d,t.timeSeconds=bd,t.timeSunday=Sd,t.timeSundays=Dd,t.timeThursday=Pd,t.timeThursdays=Od,t.timeTuesday=Ed,t.timeTuesdays=Ld,t.timeWednesday=Cd,t.timeWednesdays=Ud,t.timeWeek=Sd,t.timeWeeks=Dd,t.timeYear=Hd,t.timeYears=jd,t.timeout=yr,t.timer=hr,t.timerFlush=dr,t.touch=Ft,t.touches=function(t,n){null==n&&(n=Ut().touches);for(var e=0,r=n?n.length:0,i=new Array(r);e<r;++e)i[e]=Ot(t,n[e]);return i},t.transition=Or,t.transpose=k,t.tree=function(){var t=ch,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new dh(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new dh(r[i],i)),e.parent=n;return(a.parent=new dh(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore(function(t){t.x<f.x&&(f=t),t.x>s.x&&(s=t),t.depth>l.depth&&(l=t)});var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),v=e/(l.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*v})}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=sh(u),o=fh(o),u&&o;)c=fh(c),(a=sh(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(lh(hh(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!sh(a)&&(a.t=u,a.m+=l-s),o&&!fh(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=yh,n=!1,e=1,r=1,i=[0],o=Wl,a=Wl,u=Wl,c=Wl,f=Wl;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(nh),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l<r&&(r=l=(r+l)/2),h<s&&(s=h=(s+h)/2),n.x0=r,n.y0=s,n.x1=l,n.y1=h,n.children&&(e=i[n.depth+1]=o(n)/2,r+=f(n)-e,s+=a(n)-e,(l-=u(n)-e)<r&&(r=l=(r+l)/2),(h-=c(n)-e)<s&&(s=h=(s+h)/2),t(n,r,s,l,h))}return s.round=function(t){return arguments.length?(n=!!t,s):n},s.size=function(t){return arguments.length?(e=+t[0],r=+t[1],s):[e,r]},s.tile=function(n){return arguments.length?(t=$l(n),s):t},s.padding=function(t){return arguments.length?s.paddingInner(t).paddingOuter(t):s.paddingInner()},s.paddingInner=function(t){return arguments.length?(o="function"==typeof t?t:Zl(+t),s):o},s.paddingOuter=function(t){return arguments.length?s.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):s.paddingTop()},s.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:Zl(+t),s):a},s.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:Zl(+t),s):u},s.paddingBottom=function(t){return arguments.length?(c="function"==typeof t?t:Zl(+t),s):c},s.paddingLeft=function(t){return arguments.length?(f="function"==typeof t?t:Zl(+t),s):f},s},t.treemapBinary=function(t,n,e,r,i){var o,a,u=t.children,c=u.length,f=new Array(c+1);for(f[0]=a=o=0;o<c;++o)f[o+1]=a+=u[o].value;!function t(n,e,r,i,o,a,c){if(n>=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}for(var l=f[n],h=r/2+l,d=n+1,p=e-1;d<p;){var v=d+p>>>1;f[v]<h?d=v+1:p=v}h-f[d-1]<f[d]-h&&n+1<d&&--d;var g=f[d]-l,y=r-g;if(a-i>c-o){var _=(i*y+a*g)/r;t(n,d,g,i,o,_,c),t(d,e,y,_,o,a,c)}else{var b=(o*y+c*g)/r;t(n,d,g,i,o,a,b),t(d,e,y,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=eh,t.treemapResquarify=_h,t.treemapSlice=ph,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?ph:eh)(t,n,e,r,i)},t.treemapSquarify=yh,t.tsv=sa,t.tsvFormat=Ko,t.tsvFormatBody=Jo,t.tsvFormatRow=na,t.tsvFormatRows=ta,t.tsvFormatValue=ea,t.tsvParse=Zo,t.tsvParseRows=Qo,t.utcDay=Wd,t.utcDays=Zd,t.utcFriday=rp,t.utcFridays=sp,t.utcHour=Gd,t.utcHours=$d,t.utcMillisecond=pd,t.utcMilliseconds=vd,t.utcMinute=Xd,t.utcMinutes=Vd,t.utcMonday=Jd,t.utcMondays=ap,t.utcMonth=hp,t.utcMonths=dp,t.utcSaturday=ip,t.utcSaturdays=lp,t.utcSecond=_d,t.utcSeconds=bd,t.utcSunday=Kd,t.utcSundays=op,t.utcThursday=ep,t.utcThursdays=fp,t.utcTuesday=tp,t.utcTuesdays=up,t.utcWednesday=np,t.utcWednesdays=cp,t.utcWeek=Kd,t.utcWeeks=op,t.utcYear=pp,t.utcYears=vp,t.values=function(t){var n=[];for(var e in t)n.push(t[e]);return n},t.variance=c,t.version="5.16.0",t.voronoi=function(){var t=sb,n=lb,e=null;function r(r){return new Vb(r.map(function(e,i){var o=[Math.round(t(e,i,r)/Ib)*Ib,Math.round(n(e,i,r)/Ib)*Ib];return o.index=i,o.data=e,o}),e)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(n){return arguments.length?(t="function"==typeof n?n:fb(+n),r):t},r.y=function(t){return arguments.length?(n="function"==typeof t?t:fb(+t),r):n},r.extent=function(t){return arguments.length?(e=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):e&&[[e[0][0],e[0][1]],[e[1][0],e[1][1]]]},r.size=function(t){return arguments.length?(e=null==t?null:[[0,0],[+t[0],+t[1]]],r):e&&[e[1][0]-e[0][0],e[1][1]-e[0][1]]},r},t.window=ct,t.xml=da,t.zip=function(){return k(arguments)},t.zoom=function(){var n,e,r=tm,i=nm,o=om,a=rm,u=im,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=Ie,h=I("start","zoom","end"),d=500,p=150,v=0;function g(t){t.property("__zoom",em).on("wheel.zoom",M).on("mousedown.zoom",N).on("dblclick.zoom",T).filter(u).on("touchstart.zoom",A).on("touchmove.zoom",S).on("touchend.zoom touchcancel.zoom",k).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new Wb(n,t.x,t.y)}function _(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new Wb(t.k,r,i)}function b(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,n,e){t.on("start.zoom",function(){x(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).end()}).tween("zoom",function(){var t=this,r=arguments,o=x(t,r),a=i.apply(t,r),u=null==e?b(a):"function"==typeof e?e.apply(t,r):e,c=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),f=t.__zoom,s="function"==typeof n?n.apply(t,r):n,h=l(f.invert(u).concat(c/f.k),s.invert(u).concat(c/s.k));return function(t){if(1===t)t=s;else{var n=h(t),e=c/n[2];t=new Wb(e,u[0]-n[0]*e,u[1]-n[1]*e)}o.zoom(null,t)}})}function x(t,n,e){return!e&&t.__zooming||new w(t,n)}function w(t,n){this.that=t,this.args=n,this.active=0,this.extent=i.apply(t,n),this.taps=0}function M(){if(r.apply(this,arguments)){var t=x(this,arguments),n=this.__zoom,e=Math.max(c[0],Math.min(c[1],n.k*Math.pow(2,a.apply(this,arguments)))),i=Bt(this);if(t.wheel)t.mouse[0][0]===i[0]&&t.mouse[0][1]===i[1]||(t.mouse[1]=n.invert(t.mouse[0]=i)),clearTimeout(t.wheel);else{if(n.k===e)return;t.mouse=[i,n.invert(i)],Pr(this),t.start()}Jb(),t.wheel=setTimeout(function(){t.wheel=null,t.end()},p),t.zoom("mouse",o(_(y(n,e),t.mouse[0],t.mouse[1]),t.extent,f))}}function N(){if(!e&&r.apply(this,arguments)){var n=x(this,arguments,!0),i=Rt(t.event.view).on("mousemove.zoom",function(){if(Jb(),!n.moved){var e=t.event.clientX-u,r=t.event.clientY-c;n.moved=e*e+r*r>v}n.zoom("mouse",o(_(n.that.__zoom,n.mouse[0]=Bt(n.that),n.mouse[1]),n.extent,f))},!0).on("mouseup.zoom",function(){i.on("mousemove.zoom mouseup.zoom",null),jt(t.event.view,n.moved),Jb(),n.end()},!0),a=Bt(this),u=t.event.clientX,c=t.event.clientY;Ht(t.event.view),Kb(),n.mouse=[a,this.__zoom.invert(a)],Pr(this),n.start()}}function T(){if(r.apply(this,arguments)){var n=this.__zoom,e=Bt(this),a=n.invert(e),u=n.k*(t.event.shiftKey?.5:2),c=o(_(y(n,u),e,a),i.apply(this,arguments),f);Jb(),s>0?Rt(this).transition().duration(s).call(m,c,e):Rt(this).call(g.transform,c)}}function A(){if(r.apply(this,arguments)){var e,i,o,a,u=t.event.touches,c=u.length,f=x(this,arguments,t.event.changedTouches.length===c);for(Kb(),i=0;i<c;++i)a=[a=Ft(this,u,(o=u[i]).identifier),this.__zoom.invert(a),o.identifier],f.touch0?f.touch1||f.touch0[2]===a[2]||(f.touch1=a,f.taps=0):(f.touch0=a,e=!0,f.taps=1+!!n);n&&(n=clearTimeout(n)),e&&(f.taps<2&&(n=setTimeout(function(){n=null},d)),Pr(this),f.start())}}function S(){if(this.__zooming){var e,r,i,a,u=x(this,arguments),c=t.event.changedTouches,s=c.length;for(Jb(),n&&(n=clearTimeout(n)),u.taps=0,e=0;e<s;++e)i=Ft(this,c,(r=c[e]).identifier),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var l=u.touch0[0],h=u.touch0[1],d=u.touch1[0],p=u.touch1[1],v=(v=d[0]-l[0])*v+(v=d[1]-l[1])*v,g=(g=p[0]-h[0])*g+(g=p[1]-h[1])*g;r=y(r,Math.sqrt(v/g)),i=[(l[0]+d[0])/2,(l[1]+d[1])/2],a=[(h[0]+p[0])/2,(h[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],a=u.touch0[1]}u.zoom("touch",o(_(r,i,a),u.extent,f))}}function k(){if(this.__zooming){var n,r,i=x(this,arguments),o=t.event.changedTouches,a=o.length;for(Kb(),e&&clearTimeout(e),e=setTimeout(function(){e=null},d),n=0;n<a;++n)r=o[n],i.touch0&&i.touch0[2]===r.identifier?delete i.touch0:i.touch1&&i.touch1[2]===r.identifier&&delete i.touch1;if(i.touch1&&!i.touch0&&(i.touch0=i.touch1,delete i.touch1),i.touch0)i.touch0[1]=this.__zoom.invert(i.touch0[0]);else if(i.end(),2===i.taps){var u=Rt(this).on("dblclick.zoom");u&&u.apply(this,arguments)}}}return g.transform=function(t,n,e){var r=t.selection?t.selection():t;r.property("__zoom",em),t!==r?m(t,n,e):r.interrupt().each(function(){x(this,arguments).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()})},g.scaleBy=function(t,n,e){g.scaleTo(t,function(){var t=this.__zoom.k,e="function"==typeof n?n.apply(this,arguments):n;return t*e},e)},g.scaleTo=function(t,n,e){g.transform(t,function(){var t=i.apply(this,arguments),r=this.__zoom,a=null==e?b(t):"function"==typeof e?e.apply(this,arguments):e,u=r.invert(a),c="function"==typeof n?n.apply(this,arguments):n;return o(_(y(r,c),a,u),t,f)},e)},g.translateBy=function(t,n,e){g.transform(t,function(){return o(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof e?e.apply(this,arguments):e),i.apply(this,arguments),f)})},g.translateTo=function(t,n,e,r){g.transform(t,function(){var t=i.apply(this,arguments),a=this.__zoom,u=null==r?b(t):"function"==typeof r?r.apply(this,arguments):r;return o(Zb.translate(u[0],u[1]).scale(a.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof e?-e.apply(this,arguments):-e),t,f)},r)},w.prototype={start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){kt(new $b(g,t,this.that.__zoom),h.apply,h,[t,this.that,this.args])}},g.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:Gb(+t),g):a},g.filter=function(t){return arguments.length?(r="function"==typeof t?t:Gb(!!t),g):r},g.touchable=function(t){return arguments.length?(u="function"==typeof t?t:Gb(!!t),g):u},g.extent=function(t){return arguments.length?(i="function"==typeof t?t:Gb([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),g):i},g.scaleExtent=function(t){return arguments.length?(c[0]=+t[0],c[1]=+t[1],g):[c[0],c[1]]},g.translateExtent=function(t){return arguments.length?(f[0][0]=+t[0][0],f[1][0]=+t[1][0],f[0][1]=+t[0][1],f[1][1]=+t[1][1],g):[[f[0][0],f[0][1]],[f[1][0],f[1][1]]]},g.constrain=function(t){return arguments.length?(o=t,g):o},g.duration=function(t){return arguments.length?(s=+t,g):s},g.interpolate=function(t){return arguments.length?(l=t,g):l},g.on=function(){var t=h.on.apply(h,arguments);return t===h?g:t},g.clickDistance=function(t){return arguments.length?(v=(t=+t)*t,g):Math.sqrt(v)},g},t.zoomIdentity=Zb,t.zoomTransform=Qb,Object.defineProperty(t,"__esModule",{value:!0})});
diff --git a/Implem.Pleasanter/wwwroot/scripts/plugins/vendor.bundle.js b/Implem.Pleasanter/wwwroot/scripts/plugins/vendor.bundle.js
new file mode 100644
index 000000000..bcd92eeaa
--- /dev/null
+++ b/Implem.Pleasanter/wwwroot/scripts/plugins/vendor.bundle.js
@@ -0,0 +1,24 @@
+var Dd=Object.defineProperty;var zd=(n,e,t)=>e in n?Dd(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Ye=(n,e,t)=>(zd(n,typeof e!="symbol"?e+"":e,t),t);function ss(){}function Sx(n,e){for(const t in e)n[t]=e[t];return n}function jh(n){return n()}function Ql(){return Object.create(null)}function Ws(n){n.forEach(jh)}function Bh(n){return typeof n=="function"}function xx(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}function Ud(n){return Object.keys(n).length===0}function Qx(n,...e){if(n==null){for(const i of e)i(void 0);return ss}const t=n.subscribe(...e);return t.unsubscribe?()=>t.unsubscribe():t}function wx(n){const e={};for(const t in n)t[0]!=="$"&&(e[t]=n[t]);return e}function jd(n,e){n.appendChild(e)}function $x(n,e,t){const i=Bd(n);if(!i.getElementById(e)){const s=Ih("style");s.id=e,s.textContent=t,Nd(i,s)}}function Bd(n){if(!n)return document;const e=n.getRootNode?n.getRootNode():n.ownerDocument;return e&&e.host?e:n.ownerDocument}function Nd(n,e){return jd(n.head||n,e),e.sheet}function Id(n,e,t){n.insertBefore(e,t||null)}function Nh(n){n.parentNode&&n.parentNode.removeChild(n)}function Ih(n){return document.createElement(n)}function Gd(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Ld(n){return Array.from(n.childNodes)}function Fd(n,e,{bubbles:t=!1,cancelable:i=!1}={}){return new CustomEvent(n,{detail:e,bubbles:t,cancelable:i})}function Hd(n){const e={};return n.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}let Ui;function qi(n){Ui=n}function Wo(){if(!Ui)throw new Error("Function called outside component initialization");return Ui}function Px(n){Wo().$$.on_mount.push(n)}function kx(n){Wo().$$.on_destroy.push(n)}function vx(){const n=Wo();return(e,t,{cancelable:i=!1}={})=>{const s=n.$$.callbacks[e];if(s){const r=Fd(e,t,{cancelable:i});return s.slice().forEach(o=>{o.call(n,r)}),!r.defaultPrevented}return!0}}const Lt=[],wl=[];let ti=[];const Rr=[],Kd=Promise.resolve();let Ar=!1;function Jd(){Ar||(Ar=!0,Kd.then(Gh))}function Xr(n){ti.push(n)}function Zx(n){Rr.push(n)}const Fs=new Set;let It=0;function Gh(){if(It!==0)return;const n=Ui;do{try{for(;It<Lt.length;){const e=Lt[It];It++,qi(e),eO(e.$$)}}catch(e){throw Lt.length=0,It=0,e}for(qi(null),Lt.length=0,It=0;wl.length;)wl.pop()();for(let e=0;e<ti.length;e+=1){const t=ti[e];Fs.has(t)||(Fs.add(t),t())}ti.length=0}while(Lt.length);for(;Rr.length;)Rr.pop()();Ar=!1,Fs.clear(),qi(n)}function eO(n){if(n.fragment!==null){n.update(),Ws(n.before_update);const e=n.dirty;n.dirty=[-1],n.fragment&&n.fragment.p(n.ctx,e),n.after_update.forEach(Xr)}}function tO(n){const e=[],t=[];ti.forEach(i=>n.indexOf(i)===-1?e.push(i):t.push(i)),t.forEach(i=>i()),ti=e}const zn=new Set;let iO;function nO(n,e){n&&n.i&&(zn.delete(n),n.i(e))}function Tx(n,e,t,i){if(n&&n.o){if(zn.has(n))return;zn.add(n),iO.c.push(()=>{zn.delete(n)}),n.o(e)}}function Cx(n,e,t){const i=n.$$.props[e];i!==void 0&&(n.$$.bound[i]=t,t(n.$$.ctx[i]))}function Rx(n){n&&n.c()}function sO(n,e,t){const{fragment:i,after_update:s}=n.$$;i&&i.m(e,t),Xr(()=>{const r=n.$$.on_mount.map(jh).filter(Bh);n.$$.on_destroy?n.$$.on_destroy.push(...r):Ws(r),n.$$.on_mount=[]}),s.forEach(Xr)}function rO(n,e){const t=n.$$;t.fragment!==null&&(tO(t.after_update),Ws(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function oO(n,e){n.$$.dirty[0]===-1&&(Lt.push(n),Jd(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<<e%31}function Ax(n,e,t,i,s,r,o=null,l=[-1]){const a=Ui;qi(n);const h=n.$$={fragment:null,ctx:[],props:r,update:ss,not_equal:s,bound:Ql(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(a?a.$$.context:[])),callbacks:Ql(),dirty:l,skip_bound:!1,root:e.target||a.$$.root};o&&o(h.root);let c=!1;if(h.ctx=t?t(n,e.props||{},(f,u,...d)=>{const O=d.length?d[0]:u;return h.ctx&&s(h.ctx[f],h.ctx[f]=O)&&(!h.skip_bound&&h.bound[f]&&h.bound[f](O),c&&oO(n,f)),u}):[],h.update(),c=!0,Ws(h.before_update),h.fragment=i?i(h.ctx):!1,e.target){if(e.hydrate){const f=Ld(e.target);h.fragment&&h.fragment.l(f),f.forEach(Nh)}else h.fragment&&h.fragment.c();e.intro&&nO(n.$$.fragment),sO(n,e.target,e.anchor),Gh()}qi(a)}let Lh;typeof HTMLElement=="function"&&(Lh=class extends HTMLElement{constructor(e,t,i){super();Ye(this,"$$ctor");Ye(this,"$$s");Ye(this,"$$c");Ye(this,"$$cn",!1);Ye(this,"$$d",{});Ye(this,"$$r",!1);Ye(this,"$$p_d",{});Ye(this,"$$l",{});Ye(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,i&&this.attachShadow({mode:"open"})}addEventListener(e,t,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const s=this.$$c.$on(e,t);this.$$l_u.set(t,s)}super.addEventListener(e,t,i)}removeEventListener(e,t,i){if(super.removeEventListener(e,t,i),this.$$c){const s=this.$$l_u.get(t);s&&(s(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(r){return()=>{let o;return{c:function(){o=Ih("slot"),r!=="default"&&Gd(o,"name",r)},m:function(h,c){Id(h,o,c)},d:function(h){h&&Nh(o)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},i=Hd(this);for(const r of this.$$s)r in i&&(t[r]=[e(r)]);for(const r of this.attributes){const o=this.$$g_p(r.name);o in this.$$d||(this.$$d[o]=Un(o,r.value,this.$$p_d,"toProp"))}for(const r in this.$$p_d)!(r in this.$$d)&&this[r]!==void 0&&(this.$$d[r]=this[r],delete this[r]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});const s=()=>{this.$$r=!0;for(const r in this.$$p_d)if(this.$$d[r]=this.$$c.$$.ctx[this.$$c.$$.props[r]],this.$$p_d[r].reflect){const o=Un(r,this.$$d[r],this.$$p_d,"toAttribute");o==null?this.removeAttribute(this.$$p_d[r].attribute||r):this.setAttribute(this.$$p_d[r].attribute||r,o)}this.$$r=!1};this.$$c.$$.after_update.push(s),s();for(const r in this.$$l)for(const o of this.$$l[r]){const l=this.$$c.$on(r,o);this.$$l_u.set(o,l)}this.$$l={}}}attributeChangedCallback(e,t,i){var s;this.$$r||(e=this.$$g_p(e),this.$$d[e]=Un(e,i,this.$$p_d,"toProp"),(s=this.$$c)==null||s.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function Un(n,e,t,i){var r;const s=(r=t[n])==null?void 0:r.type;if(e=s==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!t[n])return e;if(i==="toAttribute")switch(s){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(s){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function Xx(n,e,t,i,s,r){let o=class extends Lh{constructor(){super(n,t,s),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(l=>(e[l].attribute||l).toLowerCase())}};return Object.keys(e).forEach(l=>{Object.defineProperty(o.prototype,l,{get(){return this.$$c&&l in this.$$c?this.$$c[l]:this.$$d[l]},set(a){var h;a=Un(l,a,e),this.$$d[l]=a,(h=this.$$c)==null||h.$set({[l]:a})}})}),i.forEach(l=>{Object.defineProperty(o.prototype,l,{get(){var a;return(a=this.$$c)==null?void 0:a[l]}})}),r&&(o=r(o)),n.element=o,o}class Mx{constructor(){Ye(this,"$$");Ye(this,"$$set")}$destroy(){rO(this,1),this.$destroy=ss}$on(e,t){if(!Bh(t))return ss;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{const s=i.indexOf(t);s!==-1&&i.splice(s,1)}}$set(e){this.$$set&&!Ud(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const lO="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(lO);class _{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=hi(this,e,t);let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(t,this.length,s,1),et.from(s,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=hi(this,e,t);let i=[];return this.decompose(e,t,i,0),et.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new Ei(this),r=new Ei(e);for(let o=t,l=t;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(e=1){return new Ei(this,e)}iterRange(e,t=this.length){return new Fh(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Hh(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?_.empty:e.length<=32?new ee(e):et.from(ee.split(e,[]))}}class ee extends _{constructor(e,t=aO(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((t?i:l)>=e)return new hO(s,l,i,o);s=l+1,i++}}decompose(e,t,i,s){let r=e<=0&&t>=this.length?this:new ee($l(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),l=jn(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new ee(l,o.length+r.length));else{let a=l.length>>1;i.push(new ee(l.slice(0,a)),new ee(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof ee))return super.replace(e,t,i);[e,t]=hi(this,e,t);let s=jn(this.text,jn(i.text,$l(this.text,0,e)),t),r=this.length+i.length-(t-e);return s.length<=32?new ee(s,r):et.from(ee.split(s,[]),r)}sliceString(e,t=this.length,i=`
+`){[e,t]=hi(this,e,t);let s="";for(let r=0,o=0;r<=t&&o<this.text.length;o++){let l=this.text[o],a=r+l.length;r>e&&o&&(s+=i),e<a&&t>r&&(s+=l.slice(Math.max(0,e-r),t-r)),r=a+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],s=-1;for(let r of e)i.push(r),s+=r.length+1,i.length==32&&(t.push(new ee(i,s)),i=[],s=-1);return s>-1&&t.push(new ee(i,s)),t}}class et extends _{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,s);s=l+1,i=a+1}}decompose(e,t,i,s){for(let r=0,o=0;o<=t&&r<this.children.length;r++){let l=this.children[r],a=o+l.length;if(e<=a&&t>=o){let h=s&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if([e,t]=hi(this,e,t),i.lines<this.lines)for(let s=0,r=0;s<this.children.length;s++){let o=this.children[s],l=r+o.length;if(e>=r&&t<=l){let a=o.replace(e-r,t-r,i),h=this.lines-o.lines+a.lines;if(a.lines<h>>4&&a.lines>h>>6){let c=this.children.slice();return c[s]=a,new et(c,this.length-(t-e)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=`
+`){[e,t]=hi(this,e,t);let s="";for(let r=0,o=0;r<this.children.length&&o<=t;r++){let l=this.children[r],a=o+l.length;o>e&&r&&(s+=i),e<a&&t>o&&(s+=l.sliceString(e-o,t-o,i)),o=a+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof et))return 0;let i=0,[s,r,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,r+=t){if(s==o||r==l)return i;let a=this.children[s],h=e.children[r];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of e)i+=d.lines;if(i<32){let d=[];for(let O of e)O.flatten(d);return new ee(d,t)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,c=[];function f(d){let O;if(d.lines>r&&d instanceof et)for(let m of d.children)f(m);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ee&&a&&(O=c[c.length-1])instanceof ee&&d.lines+O.lines<=32?(a+=d.lines,h+=d.length+1,c[c.length-1]=new ee(O.text.concat(d.text),O.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,c.push(d))}function u(){a!=0&&(l.push(c.length==1?c[0]:et.from(c,h)),h=-1,a=c.length=0)}for(let d of e)f(d);return u(),l.length==1?l[0]:new et(l,t)}}_.empty=new ee([""],0);function aO(n){let e=-1;for(let t of n)e+=t.length+1;return e}function jn(n,e,t=0,i=1e9){for(let s=0,r=0,o=!0;r<n.length&&s<=i;r++){let l=n[r],a=s+l.length;a>=t&&(a>i&&(l=l.slice(0,i-s)),s<t&&(l=l.slice(t-s)),o?(e[e.length-1]+=l,o=!1):e.push(l)),s=a+1}return e}function $l(n,e,t){return jn(n,[""],e,t)}class Ei{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof ee?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ee?s.text.length:s.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=`
+`,this;e--}else if(s instanceof ee){let a=s.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=s.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof ee?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class Fh{constructor(e,t,i){this.value="",this.done=!1,this.cursor=new Ei(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=i?s:t<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class Hh{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:s}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(_.prototype[Symbol.iterator]=function(){return this.iter()},Ei.prototype[Symbol.iterator]=Fh.prototype[Symbol.iterator]=Hh.prototype[Symbol.iterator]=function(){return this});class hO{constructor(e,t,i,s){this.from=e,this.to=t,this.number=i,this.text=s}get length(){return this.to-this.from}}function hi(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}let ii="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(n=>n?parseInt(n,36):1);for(let n=1;n<ii.length;n++)ii[n]+=ii[n-1];function cO(n){for(let e=1;e<ii.length;e+=2)if(ii[e]>n)return ii[e-1]<=n;return!1}function Pl(n){return n>=127462&&n<=127487}const kl=8205;function ue(n,e,t=!0,i=!0){return(t?Kh:fO)(n,e,i)}function Kh(n,e,t){if(e==n.length)return e;e&&Jh(n.charCodeAt(e))&&ec(n.charCodeAt(e-1))&&e--;let i=ae(n,e);for(e+=qe(i);e<n.length;){let s=ae(n,e);if(i==kl||s==kl||t&&cO(s))e+=qe(s),i=s;else if(Pl(s)){let r=0,o=e-2;for(;o>=0&&Pl(ae(n,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function fO(n,e,t){for(;e>0;){let i=Kh(n,e-2,t);if(i<e)return i;e--}return 0}function Jh(n){return n>=56320&&n<57344}function ec(n){return n>=55296&&n<56320}function ae(n,e){let t=n.charCodeAt(e);if(!ec(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return Jh(i)?(t-55296<<10)+(i-56320)+65536:t}function Yo(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}function qe(n){return n<65536?1:2}const Mr=/\r\n?|\n/;var ce=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(ce||(ce={}));class rt{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let i=this.sections[t+1];e+=i<0?this.sections[t]:i}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,i=0,s=0;t<this.sections.length;){let r=this.sections[t++],o=this.sections[t++];o<0?(e(i,s,r),s+=r):s+=o,i+=r}}iterChangedRanges(e,t=!1){Wr(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let i=this.sections[t++],s=this.sections[t++];s<0?e.push(i,s):e.push(s,i)}return new rt(e)}composeDesc(e){return this.empty?e:e.empty?this:tc(this,e)}mapDesc(e,t=!1){return e.empty?this:Yr(this,e,t)}mapPos(e,t=-1,i=ce.Simple){let s=0,r=0;for(let o=0;o<this.sections.length;){let l=this.sections[o++],a=this.sections[o++],h=s+l;if(a<0){if(h>e)return r+(e-s);r+=l}else{if(i!=ce.Simple&&h>=e&&(i==ce.TrackDel&&s<e&&h>e||i==ce.TrackBefore&&s<e||i==ce.TrackAfter&&h>e))return null;if(h>e||h==e&&t<0&&!l)return e==s||t<0?r:r+a;r+=a}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,t=e){for(let i=0,s=0;i<this.sections.length&&s<=t;){let r=this.sections[i++],o=this.sections[i++],l=s+r;if(o>=0&&s<=t&&l>=e)return s<e&&l>t?"cover":!0;s=l}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let i=this.sections[t++],s=this.sections[t++];e+=(e?" ":"")+i+(s>=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new rt(e)}static create(e){return new rt(e)}}class re extends rt{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Wr(this,(t,i,s,r,o)=>e=e.replace(s,s+(i-t),o),!1),e}mapDesc(e,t=!1){return Yr(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let s=0,r=0;s<t.length;s+=2){let o=t[s],l=t[s+1];if(l>=0){t[s]=l,t[s+1]=o;let a=s>>1;for(;i.length<a;)i.push(_.empty);i.push(o?e.slice(r,r+o):_.empty)}r+=o}return new re(t,i)}compose(e){return this.empty?e:e.empty?this:tc(this,e,!0)}map(e,t=!1){return e.empty?this:Yr(this,e,t,!0)}iterChanges(e,t=!1){Wr(this,e,t)}get desc(){return rt.create(this.sections)}filter(e){let t=[],i=[],s=[],r=new ji(this);e:for(let o=0,l=0;;){let a=o==e.length?1e9:e[o++];for(;l<a||l==a&&r.len==0;){if(r.done)break e;let c=Math.min(r.len,a-l);de(s,c,-1);let f=r.ins==-1?-1:r.off==0?r.ins:0;de(t,c,f),f>0&&Qt(i,t,r.text),r.forward(c),l+=c}let h=e[o++];for(;l<h;){if(r.done)break e;let c=Math.min(r.len,h-l);de(t,c,-1),de(s,c,r.ins==-1?-1:r.off==0?r.ins:0),r.forward(c),l+=c}}return{changes:new re(t,i),filtered:rt.create(s)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let i=this.sections[t],s=this.sections[t+1];s<0?e.push(i):s==0?e.push([i]):e.push([i].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,i){let s=[],r=[],o=0,l=null;function a(c=!1){if(!c&&!s.length)return;o<t&&de(s,t-o,-1);let f=new re(s,r);l=l?l.compose(f.map(l)):f,s=[],r=[],o=0}function h(c){if(Array.isArray(c))for(let f of c)h(f);else if(c instanceof re){if(c.length!=t)throw new RangeError(`Mismatched change set length (got ${c.length}, expected ${t})`);a(),l=l?l.compose(c.map(l)):c}else{let{from:f,to:u=f,insert:d}=c;if(f>u||f<0||u>t)throw new RangeError(`Invalid change range ${f} to ${u} (in doc of length ${t})`);let O=d?typeof d=="string"?_.of(d.split(i||Mr)):d:_.empty,m=O.length;if(f==u&&m==0)return;f<o&&a(),f>o&&de(s,f-o,-1),de(s,u-f,m),Qt(r,s,O),o=u}}return h(e),a(!l),l}static empty(e){return new re(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let s=0;s<e.length;s++){let r=e[s];if(typeof r=="number")t.push(r,-1);else{if(!Array.isArray(r)||typeof r[0]!="number"||r.some((o,l)=>l&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;i.length<s;)i.push(_.empty);i[s]=_.of(r.slice(1)),t.push(r[0],i[s].length)}}}return new re(t,i)}static createSet(e,t){return new re(e,t)}}function de(n,e,t,i=!1){if(e==0&&t<=0)return;let s=n.length-2;s>=0&&t<=0&&t==n[s+1]?n[s]+=e:e==0&&n[s]==0?n[s+1]+=t:i?(n[s]+=e,n[s+1]+=t):n.push(e,t)}function Qt(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i<n.length)n[n.length-1]=n[n.length-1].append(t);else{for(;n.length<i;)n.push(_.empty);n.push(t)}}function Wr(n,e,t){let i=n.inserted;for(let s=0,r=0,o=0;o<n.sections.length;){let l=n.sections[o++],a=n.sections[o++];if(a<0)s+=l,r+=l;else{let h=s,c=r,f=_.empty;for(;h+=l,c+=a,a&&i&&(f=f.append(i[o-2>>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(s,h,r,c,f),s=h,r=c}}}function Yr(n,e,t,i=!1){let s=[],r=i?[]:null,o=new ji(n),l=new ji(e);for(let a=-1;;)if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);de(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len<o.len||l.len==o.len&&!t))){let h=l.len;for(de(s,l.ins,-1);h;){let c=Math.min(o.len,h);o.ins>=0&&a<o.i&&o.len<=c&&(de(s,0,o.ins),r&&Qt(r,s,o.text),a=o.i),o.forward(c),h-=c}l.next()}else if(o.ins>=0){let h=0,c=o.len;for(;c;)if(l.ins==-1){let f=Math.min(c,l.len);h+=f,c-=f,l.forward(f)}else if(l.ins==0&&l.len<c)c-=l.len,l.next();else break;de(s,h,a<o.i?o.ins:0),r&&a<o.i&&Qt(r,s,o.text),a=o.i,o.forward(o.len-c)}else{if(o.done&&l.done)return r?re.createSet(s,r):rt.create(s);throw new Error("Mismatched change set lengths")}}function tc(n,e,t=!1){let i=[],s=t?[]:null,r=new ji(n),o=new ji(e);for(let l=!1;;){if(r.done&&o.done)return s?re.createSet(i,s):rt.create(i);if(r.ins==0)de(i,r.len,0,l),r.next();else if(o.len==0&&!o.done)de(i,0,o.ins,l),s&&Qt(s,i,o.text),o.next();else{if(r.done||o.done)throw new Error("Mismatched change set lengths");{let a=Math.min(r.len2,o.len),h=i.length;if(r.ins==-1){let c=o.ins==-1?-1:o.off?0:o.ins;de(i,a,c,l),s&&c&&Qt(s,i,o.text)}else o.ins==-1?(de(i,r.off?0:r.len,a,l),s&&Qt(s,i,r.textBit(a))):(de(i,r.off?0:r.len,o.off?0:o.ins,l),s&&!o.off&&Qt(s,i,o.text));l=(r.ins>a||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}class ji{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?_.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?_.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Vt{constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let i,s;return this.empty?i=s=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new Vt(i,s,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return y.range(e,t);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return y.range(this.anchor,i)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return y.range(e.anchor,e.head)}static create(e,t,i){return new Vt(e,t,i)}}class y{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:y.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;i<this.ranges.length;i++)if(!this.ranges[i].eq(e.ranges[i],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new y([this.main],0)}addRange(e,t=!0){return y.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let i=this.ranges.slice();return i[t]=e,y.create(i,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new y(e.ranges.map(t=>Vt.fromJSON(t)),e.main)}static single(e,t=e){return new y([y.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;s<e.length;s++){let r=e[s];if(r.empty?r.from<=i:r.from<i)return y.normalized(e.slice(),t);i=r.to}return new y(e,t)}static cursor(e,t=0,i,s){return Vt.create(e,e,(t==0?0:t<0?8:16)|(i==null?7:Math.min(6,i))|(s??16777215)<<6)}static range(e,t,i,s){let r=(i??16777215)<<6|(s==null?7:Math.min(6,s));return t<e?Vt.create(t,e,48|r):Vt.create(e,t,(t>e?8:0)|r)}static normalized(e,t=0){let i=e[t];e.sort((s,r)=>s.from-r.from),t=e.indexOf(i);for(let s=1;s<e.length;s++){let r=e[s],o=e[s-1];if(r.empty?r.from<=o.to:r.from<o.to){let l=o.from,a=Math.max(r.to,o.to);s<=t&&t--,e.splice(--s,2,r.anchor>r.head?y.range(a,l):y.range(l,a))}}return new y(e,t)}}function ic(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}let qo=0;class T{constructor(e,t,i,s,r){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=s,this.id=qo++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new T(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:Eo),!!e.static,e.enables)}of(e){return new Bn([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Bn(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Bn(e,this,2,t)}from(e,t){return t||(t=i=>i),this.compute([e],i=>t(i.field(e)))}}function Eo(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}class Bn{constructor(e,t,i,s){this.dependencies=e,this.facet=t,this.type=i,this.value=s,this.id=qo++}dynamicSlot(e){var t;let i=this.value,s=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,a=!1,h=!1,c=[];for(let f of this.dependencies)f=="doc"?a=!0:f=="selection"?h=!0:((t=e[f.id])!==null&&t!==void 0?t:1)&1||c.push(e[f.id]);return{create(f){return f.values[o]=i(f),1},update(f,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||qr(f,c)){let d=i(f);if(l?!vl(d,f.values[o],s):!s(d,f.values[o]))return f.values[o]=d,1}return 0},reconfigure:(f,u)=>{let d,O=u.config.address[r];if(O!=null){let m=os(u,O);if(this.dependencies.every(g=>g instanceof T?u.facet(g)===f.facet(g):g instanceof oe?u.field(g,!1)==f.field(g,!1):!0)||(l?vl(d=i(f),m,s):s(d=i(f),m)))return f.values[o]=m,0}else d=i(f);return f.values[o]=d,1}}}}function vl(n,e,t){if(n.length!=e.length)return!1;for(let i=0;i<n.length;i++)if(!t(n[i],e[i]))return!1;return!0}function qr(n,e){let t=!1;for(let i of e)Vi(n,i)&1&&(t=!0);return t}function uO(n,e,t){let i=t.map(a=>n[a.id]),s=t.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let c=0;c<i.length;c++){let f=os(a,i[c]);if(s[c]==2)for(let u of f)h.push(u);else h.push(f)}return e.combine(h)}return{create(a){for(let h of i)Vi(a,h);return a.values[o]=l(a),1},update(a,h){if(!qr(a,r))return 0;let c=l(a);return e.compare(c,a.values[o])?0:(a.values[o]=c,1)},reconfigure(a,h){let c=qr(a,i),f=h.config.facets[e.id],u=h.facet(e);if(f&&!c&&Eo(t,f))return a.values[o]=u,0;let d=l(a);return e.compare(d,u)?(a.values[o]=u,0):(a.values[o]=d,1)}}}const Zl=T.define({static:!0});class oe{constructor(e,t,i,s,r){this.id=e,this.createF=t,this.updateF=i,this.compareF=s,this.spec=r,this.provides=void 0}static define(e){let t=new oe(qo++,e.create,e.update,e.compare||((i,s)=>i===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Zl).find(i=>i.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:i=>(i.values[t]=this.create(i),1),update:(i,s)=>{let r=i.values[t],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[t]=o,1)},reconfigure:(i,s)=>s.config.address[this.id]!=null?(i.values[t]=s.field(this),0):(i.values[t]=this.create(i),1)}}init(e){return[this,Zl.of({field:this,create:e})]}get extension(){return this}}const qt={lowest:4,low:3,default:2,high:1,highest:0};function wi(n){return e=>new nc(e,n)}const Xt={highest:wi(qt.highest),high:wi(qt.high),default:wi(qt.default),low:wi(qt.low),lowest:wi(qt.lowest)};class nc{constructor(e,t){this.inner=e,this.prec=t}}class Ys{of(e){return new Er(this,e)}reconfigure(e){return Ys.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class Er{constructor(e,t){this.compartment=e,this.inner=t}}class rs{constructor(e,t,i,s,r,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<i.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(e,t,i){let s=[],r=Object.create(null),o=new Map;for(let u of dO(e,t,o))u instanceof oe?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let c=i==null?void 0:i.config.facets;for(let u in r){let d=r[u],O=d[0].facet,m=c&&c[u]||[];if(d.every(g=>g.type==0))if(l[O.id]=a.length<<1|1,Eo(m,d))a.push(i.facet(O));else{let g=O.combine(d.map(b=>b.value));a.push(i&&O.compare(g,i.facet(O))?i.facet(O):g)}else{for(let g of d)g.type==0?(l[g.id]=a.length<<1|1,a.push(g.value)):(l[g.id]=h.length<<1,h.push(b=>g.dynamicSlot(b)));l[O.id]=h.length<<1,h.push(g=>uO(g,O,d))}}let f=h.map(u=>u(l));return new rs(e,o,f,l,a,r)}}function dO(n,e,t){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof Er&&t.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof Er){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),r(h,l)}else if(o instanceof nc)r(o.inner,o.prec);else if(o instanceof oe)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Bn)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,qt.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,qt.default),i.reduce((o,l)=>o.concat(l))}function Vi(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let s=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|s}function os(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}const sc=T.define(),Vr=T.define({combine:n=>n.some(e=>e),static:!0}),rc=T.define({combine:n=>n.length?n[0]:void 0,static:!0}),oc=T.define(),lc=T.define(),ac=T.define(),hc=T.define({combine:n=>n.length?n[0]:!1});class pt{constructor(e,t){this.type=e,this.value=t}static define(){return new OO}}class OO{of(e){return new pt(this,e)}}class pO{constructor(e){this.map=e}of(e){return new A(this,e)}}class A{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new A(this.type,t)}is(e){return this.type==e}static define(e={}){return new pO(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let s of e){let r=s.map(t);r&&i.push(r)}return i}}A.reconfigure=A.define();A.appendConfig=A.define();class ie{constructor(e,t,i,s,r,o){this.startState=e,this.changes=t,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&ic(i,t.newLength),r.some(l=>l.type==ie.time)||(this.annotations=r.concat(ie.time.of(Date.now())))}static create(e,t,i,s,r,o){return new ie(e,t,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(ie.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}}ie.time=pt.define();ie.userEvent=pt.define();ie.addToHistory=pt.define();ie.remote=pt.define();function mO(n,e){let t=[];for(let i=0,s=0;;){let r,o;if(i<n.length&&(s==e.length||e[s]>=n[i]))r=n[i++],o=n[i++];else if(s<e.length)r=e[s++],o=e[s++];else return t;!t.length||t[t.length-1]<r?t.push(r,o):t[t.length-1]<o&&(t[t.length-1]=o)}}function cc(n,e,t){var i;let s,r,o;return t?(s=e.changes,r=re.empty(e.changes.length),o=n.changes.compose(e.changes)):(s=e.changes.map(n.changes),r=n.changes.mapDesc(e.changes,!0),o=n.changes.compose(s)),{changes:o,selection:e.selection?e.selection.map(r):(i=n.selection)===null||i===void 0?void 0:i.map(s),effects:A.mapEffects(n.effects,s).concat(A.mapEffects(e.effects,r)),annotations:n.annotations.length?n.annotations.concat(e.annotations):e.annotations,scrollIntoView:n.scrollIntoView||e.scrollIntoView}}function _r(n,e,t){let i=e.selection,s=ni(e.annotations);return e.userEvent&&(s=s.concat(ie.userEvent.of(e.userEvent))),{changes:e.changes instanceof re?e.changes:re.of(e.changes||[],t,n.facet(rc)),selection:i&&(i instanceof y?i:y.single(i.anchor,i.head)),effects:ni(e.effects),annotations:s,scrollIntoView:!!e.scrollIntoView}}function fc(n,e,t){let i=_r(n,e.length?e[0]:{},n.doc.length);e.length&&e[0].filter===!1&&(t=!1);for(let r=1;r<e.length;r++){e[r].filter===!1&&(t=!1);let o=!!e[r].sequential;i=cc(i,_r(n,e[r],o?i.changes.newLength:n.doc.length),o)}let s=ie.create(n,i.changes,i.selection,i.effects,i.annotations,i.scrollIntoView);return bO(t?gO(s):s)}function gO(n){let e=n.startState,t=!0;for(let s of e.facet(oc)){let r=s(n);if(r===!1){t=!1;break}Array.isArray(r)&&(t=t===!0?r:mO(t,r))}if(t!==!0){let s,r;if(t===!1)r=n.changes.invertedDesc,s=re.empty(e.doc.length);else{let o=n.changes.filter(t);s=o.changes,r=o.filtered.mapDesc(o.changes).invertedDesc}n=ie.create(e,s,n.selection&&n.selection.map(r),A.mapEffects(n.effects,r),n.annotations,n.scrollIntoView)}let i=e.facet(lc);for(let s=i.length-1;s>=0;s--){let r=i[s](n);r instanceof ie?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof ie?n=r[0]:n=fc(e,ni(r),!1)}return n}function bO(n){let e=n.startState,t=e.facet(ac),i=n;for(let s=t.length-1;s>=0;s--){let r=t[s](n);r&&Object.keys(r).length&&(i=cc(i,_r(e,r,n.changes.newLength),!0))}return i==n?n:ie.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}const yO=[];function ni(n){return n==null?yO:Array.isArray(n)?n:[n]}var F=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(F||(F={}));const SO=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Dr;try{Dr=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function xO(n){if(Dr)return Dr.test(n);for(let e=0;e<n.length;e++){let t=n[e];if(/\w/.test(t)||t>"€"&&(t.toUpperCase()!=t.toLowerCase()||SO.test(t)))return!0}return!1}function QO(n){return e=>{if(!/\S/.test(e))return F.Space;if(xO(e))return F.Word;for(let t=0;t<n.length;t++)if(e.indexOf(n[t])>-1)return F.Word;return F.Other}}class D{constructor(e,t,i,s,r,o){this.config=e,this.doc=t,this.selection=i,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;l<this.config.dynamicSlots.length;l++)Vi(this,l<<1);this.computeSlot=null}field(e,t=!0){let i=this.config.address[e.id];if(i==null){if(t)throw new RangeError("Field is not present in this state");return}return Vi(this,i),os(this,i)}update(...e){return fc(this,e,!0)}applyTransaction(e){let t=this.config,{base:i,compartments:s}=t;for(let l of e.effects)l.is(Ys.reconfigure)?(t&&(s=new Map,t.compartments.forEach((a,h)=>s.set(h,a)),t=null),s.set(l.value.compartment,l.value.extension)):l.is(A.reconfigure)?(t=null,i=l.value):l.is(A.appendConfig)&&(t=null,i=ni(i).concat(l.value));let r;t?r=e.startState.values.slice():(t=rs.resolve(i,s,this),r=new D(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(Vr)?e.newSelection:e.newSelection.asSingle();new D(t,e.newDoc,o,r,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:y.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),s=this.changes(i.changes),r=[i.range],o=ni(i.effects);for(let l=1;l<t.ranges.length;l++){let a=e(t.ranges[l]),h=this.changes(a.changes),c=h.map(s);for(let u=0;u<l;u++)r[u]=r[u].map(c);let f=s.mapDesc(h,!0);r.push(a.range.map(f)),s=s.compose(c),o=A.mapEffects(o,c).concat(A.mapEffects(ni(a.effects),f))}return{changes:s,selection:y.create(r,t.mainIndex),effects:o}}changes(e=[]){return e instanceof re?e:re.of(e,this.doc.length,this.facet(D.lineSeparator))}toText(e){return _.of(e.split(this.facet(D.lineSeparator)||Mr))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(Vi(this,t),os(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let i in e){let s=e[i];s instanceof oe&&this.config.address[s.id]!=null&&(t[i]=s.spec.toJSON(this.field(e[i]),this))}return t}static fromJSON(e,t={},i){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let s=[];if(i){for(let r in i)if(Object.prototype.hasOwnProperty.call(e,r)){let o=i[r],l=e[r];s.push(o.init(a=>o.spec.fromJSON(l,a)))}}return D.create({doc:e.doc,selection:y.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=rs.resolve(e.extensions||[],new Map),i=e.doc instanceof _?e.doc:_.of((e.doc||"").split(t.staticFacet(D.lineSeparator)||Mr)),s=e.selection?e.selection instanceof y?e.selection:y.single(e.selection.anchor,e.selection.head):y.single(0);return ic(s,i.length),t.staticFacet(Vr)||(s=s.asSingle()),new D(t,i,s,t.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(D.tabSize)}get lineBreak(){return this.facet(D.lineSeparator)||`
+`}get readOnly(){return this.facet(hc)}phrase(e,...t){for(let i of this.facet(D.phrases))if(Object.prototype.hasOwnProperty.call(i,e)){e=i[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>t.length?i:t[r-1]})),e}languageDataAt(e,t,i=-1){let s=[];for(let r of this.facet(sc))for(let o of r(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){return QO(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:t,from:i,length:s}=this.doc.lineAt(e),r=this.charCategorizer(e),o=e-i,l=e-i;for(;o>0;){let a=ue(t,o,!1);if(r(t.slice(a,o))!=F.Word)break;o=a}for(;l<s;){let a=ue(t,l);if(r(t.slice(l,a))!=F.Word)break;l=a}return o==l?null:y.range(o+i,l+i)}}D.allowMultipleSelections=Vr;D.tabSize=T.define({combine:n=>n.length?n[0]:4});D.lineSeparator=rc;D.readOnly=hc;D.phrases=T.define({compare(n,e){let t=Object.keys(n),i=Object.keys(e);return t.length==i.length&&t.every(s=>n[s]==e[s])}});D.languageData=sc;D.changeFilter=oc;D.transactionFilter=lc;D.transactionExtender=ac;Ys.reconfigure=A.define();function lt(n,e,t={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(t,r))i[r]=t[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in e)i[s]===void 0&&(i[s]=e[s]);return i}class Dt{eq(e){return this==e}range(e,t=e){return zr.create(e,t,this)}}Dt.prototype.startSide=Dt.prototype.endSide=0;Dt.prototype.point=!1;Dt.prototype.mapMode=ce.TrackDel;let zr=class uc{constructor(e,t,i){this.from=e,this.to=t,this.value=i}static create(e,t,i){return new uc(e,t,i)}};function Ur(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}class Vo{constructor(e,t,i,s){this.from=e,this.to=t,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,t,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-e||(i?this.value[a].endSide:this.value[a].startSide)-t;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(e,t,i,s){for(let r=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,r);r<o;r++)if(s(this.from[r]+e,this.to[r]+e,this.value[r])===!1)return!1}map(e,t){let i=[],s=[],r=[],o=-1,l=-1;for(let a=0;a<this.value.length;a++){let h=this.value[a],c=this.from[a]+e,f=this.to[a]+e,u,d;if(c==f){let O=t.mapPos(c,h.startSide,h.mapMode);if(O==null||(u=d=O,h.startSide!=h.endSide&&(d=t.mapPos(c,h.endSide),d<u)))continue}else if(u=t.mapPos(c,h.startSide),d=t.mapPos(f,h.endSide),u>d||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new Vo(s,r,i,l):null,pos:o}}}class V{constructor(e,t,i,s){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=s}static create(e,t,i,s){return new V(e,t,i,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(i&&(t=t.slice().sort(Ur)),this.isEmpty)return t.length?V.of(t):this;let l=new dc(this,null,-1).goto(0),a=0,h=[],c=new vt;for(;l.value||a<t.length;)if(a<t.length&&(l.from-t[a].from||l.startSide-t[a].value.startSide)>=0){let f=t[a++];c.addInner(f.from,f.to,f.value)||h.push(f)}else l.rangeIndex==1&&l.chunkIndex<this.chunk.length&&(a==t.length||this.chunkEnd(l.chunkIndex)<t[a].from)&&(!o||s>this.chunkEnd(l.chunkIndex)||r<this.chunkPos[l.chunkIndex])&&c.addChunk(this.chunkPos[l.chunkIndex],this.chunk[l.chunkIndex])?l.nextChunk():((!o||s>l.to||r<l.from||o(l.from,l.to,l.value))&&(c.addInner(l.from,l.to,l.value)||h.push(zr.create(l.from,l.to,l.value))),l.next());return c.finishInner(this.nextLayer.isEmpty&&!h.length?V.empty:this.nextLayer.update({add:h,filter:o,filterFrom:s,filterTo:r}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],i=[],s=-1;for(let o=0;o<this.chunk.length;o++){let l=this.chunkPos[o],a=this.chunk[o],h=e.touchesRange(l,l+a.length);if(h===!1)s=Math.max(s,a.maxPoint),t.push(a),i.push(e.mapPos(l));else if(h===!0){let{mapped:c,pos:f}=a.map(l,e);c&&(s=Math.max(s,c.maxPoint),t.push(c),i.push(f))}}let r=this.nextLayer.map(e);return t.length==0?r:new V(i,t,r||V.empty,s)}between(e,t,i){if(!this.isEmpty){for(let s=0;s<this.chunk.length;s++){let r=this.chunkPos[s],o=this.chunk[s];if(t>=r&&e<=r+o.length&&o.between(r,e-r,t-r,i)===!1)return}this.nextLayer.between(e,t,i)}}iter(e=0){return Bi.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Bi.from(e).goto(t)}static compare(e,t,i,s,r=-1){let o=e.filter(f=>f.maxPoint>0||!f.isEmpty&&f.maxPoint>=r),l=t.filter(f=>f.maxPoint>0||!f.isEmpty&&f.maxPoint>=r),a=Tl(o,l,i),h=new $i(o,a,r),c=new $i(l,a,r);i.iterGaps((f,u,d)=>Cl(h,f,c,u,d,s)),i.empty&&i.length==0&&Cl(h,0,c,0,0,s)}static eq(e,t,i=0,s){s==null&&(s=999999999);let r=e.filter(c=>!c.isEmpty&&t.indexOf(c)<0),o=t.filter(c=>!c.isEmpty&&e.indexOf(c)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=Tl(r,o),a=new $i(r,l,0).goto(i),h=new $i(o,l,0).goto(i);for(;;){if(a.to!=h.to||!jr(a.active,h.active)||a.point&&(!h.point||!a.point.eq(h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(e,t,i,s,r=-1){let o=new $i(e,null,r).goto(t),l=t,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let c=o.activeForPoint(o.to),f=o.pointFrom<t?c.length+1:o.point.startSide<0?c.length:Math.min(c.length,a);s.point(l,h,o.point,c,f,o.pointRank),a=Math.min(o.openEnd(h),c.length)}else h>l&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(e,t=!1){let i=new vt;for(let s of e instanceof zr?[e]:t?wO(e):e)i.add(s.from,s.to,s.value);return i.finish()}static join(e){if(!e.length)return V.empty;let t=e[e.length-1];for(let i=e.length-2;i>=0;i--)for(let s=e[i];s!=V.empty;s=s.nextLayer)t=new V(s.chunkPos,s.chunk,t,Math.max(s.maxPoint,t.maxPoint));return t}}V.empty=new V([],[],null,-1);function wO(n){if(n.length>1)for(let e=n[0],t=1;t<n.length;t++){let i=n[t];if(Ur(e,i)>0)return n.slice().sort(Ur);e=i}return n}V.empty.nextLayer=V.empty;class vt{finishChunk(e){this.chunks.push(new Vo(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,i){this.addInner(e,t,i)||(this.nextLayer||(this.nextLayer=new vt)).add(e,t,i)}addInner(e,t,i){let s=e-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=t,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let i=t.value.length-1;return this.last=t.value[i],this.lastFrom=t.from[i]+e,this.lastTo=t.to[i]+e,!0}finish(){return this.finishInner(V.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=V.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}}function Tl(n,e,t){let i=new Map;for(let r of n)for(let o=0;o<r.chunk.length;o++)r.chunk[o].maxPoint<=0&&i.set(r.chunk[o],r.chunkPos[o]);let s=new Set;for(let r of e)for(let o=0;o<r.chunk.length;o++){let l=i.get(r.chunk[o]);l!=null&&(t?t.mapPos(l):l)==r.chunkPos[o]&&!(t!=null&&t.touchesRange(l,l+r.chunk[o].length))&&s.add(r.chunk[o])}return s}class dc{constructor(e,t,i,s=0){this.layer=e,this.skip=t,this.minPoint=i,this.rank=s}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,t=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,t,!1),this}gotoInner(e,t,i){for(;this.chunkIndex<this.layer.chunk.length;){let s=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(s)||this.layer.chunkEnd(this.chunkIndex)<e||s.maxPoint<this.minPoint))break;this.chunkIndex++,i=!1}if(this.chunkIndex<this.layer.chunk.length){let s=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0);(!i||this.rangeIndex<s)&&this.setRangeIndex(s)}this.next()}forward(e,t){(this.to-e||this.endSide-t)<0&&this.gotoInner(e,t,!0)}next(){for(;;)if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}else{let e=this.layer.chunkPos[this.chunkIndex],t=this.layer.chunk[this.chunkIndex],i=e+t.from[this.rangeIndex];if(this.from=i,this.to=e+t.to[this.rangeIndex],this.value=t.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}}class Bi{constructor(e){this.heap=e}static from(e,t=null,i=-1){let s=[];for(let r=0;r<e.length;r++)for(let o=e[r];!o.isEmpty;o=o.nextLayer)o.maxPoint>=i&&s.push(new dc(o,t,i,r));return s.length==1?s[0]:new Bi(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let i of this.heap)i.goto(e,t);for(let i=this.heap.length>>1;i>=0;i--)Hs(this.heap,i);return this.next(),this}forward(e,t){for(let i of this.heap)i.forward(e,t);for(let i=this.heap.length>>1;i>=0;i--)Hs(this.heap,i);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),Hs(this.heap,0)}}}function Hs(n,e){for(let t=n[e];;){let i=(e<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1<n.length&&s.compare(n[i+1])>=0&&(s=n[i+1],i++),t.compare(s)<0)break;n[i]=t,n[e]=s,e=i}}class $i{constructor(e,t,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Bi.from(e,t,i)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Sn(this.active,e),Sn(this.activeTo,e),Sn(this.activeRank,e),this.minActive=Rl(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:s,rank:r}=this.cursor;for(;t<this.activeRank.length&&(r-this.activeRank[t]||s-this.activeTo[t])>0;)t++;xn(this.active,t,i),xn(this.activeTo,t,s),xn(this.activeRank,t,r),e&&xn(e,t,this.cursor.from),this.minActive=Rl(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Sn(i,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)this.cursor.next();else{this.point=r,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=r.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else{this.to=this.endSide=1e9;break}}if(i){this.openStart=0;for(let s=i.length-1;s>=0&&i[s]<e;s--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let t=[];for(let i=this.active.length-1;i>=0&&!(this.activeRank[i]<this.pointRank);i--)(this.activeTo[i]>e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&t.push(this.active[i]);return t.reverse()}openEnd(e){let t=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>e;i--)t++;return t}}function Cl(n,e,t,i,s,r){n.goto(e),t.goto(i);let o=i+s,l=i,a=i-e;for(;;){let h=n.to+a-t.to||n.endSide-t.endSide,c=h<0?n.to+a:t.to,f=Math.min(c,o);if(n.point||t.point?n.point&&t.point&&(n.point==t.point||n.point.eq(t.point))&&jr(n.activeForPoint(n.to),t.activeForPoint(t.to))||r.comparePoint(l,f,n.point,t.point):f>l&&!jr(n.active,t.active)&&r.compareRange(l,f,n.active,t.active),c>o)break;l=c,h<=0&&n.next(),h>=0&&t.next()}}function jr(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!=e[t]&&!n[t].eq(e[t]))return!1;return!0}function Sn(n,e){for(let t=e,i=n.length-1;t<i;t++)n[t]=n[t+1];n.pop()}function xn(n,e,t){for(let i=n.length-1;i>=e;i--)n[i+1]=n[i];n[e]=t}function Rl(n,e){let t=-1,i=1e9;for(let s=0;s<e.length;s++)(e[s]-i||n[s].endSide-n[t].endSide)<0&&(t=s,i=e[s]);return t}function yi(n,e,t=n.length){let i=0;for(let s=0;s<t;)n.charCodeAt(s)==9?(i+=e-i%e,s++):(i++,s=ue(n,s));return i}function Br(n,e,t,i){for(let s=0,r=0;;){if(r>=e)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?t-r%t:1,s=ue(n,s)}return i===!0?-1:n.length}const Nr="ͼ",Al=typeof Symbol>"u"?"__"+Nr:Symbol.for(Nr),Ir=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),Xl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Zt{constructor(e,t){this.rules=[];let{finish:i}=t||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let c=[],f=/^@(\w+)\b/.exec(o[0]),u=f&&f[1]=="keyframes";if(f&&l==null)return a.push(o[0]+";");for(let d in l){let O=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(m=>o.map(g=>m.replace(/&/,g))).reduce((m,g)=>m.concat(g)),O,a);else if(O&&typeof O=="object"){if(!f)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),O,c,u)}else O!=null&&c.push(d.replace(/_.*/,"").replace(/[A-Z]/g,m=>"-"+m.toLowerCase())+": "+O+";")}(c.length||u)&&a.push((i&&!f&&!h?o.map(i):o).join(", ")+" {"+c.join(" ")+"}")}for(let o in e)r(s(o),e[o],this.rules)}getRules(){return this.rules.join(`
+`)}static newName(){let e=Xl[Al]||1;return Xl[Al]=e+1,Nr+e.toString(36)}static mount(e,t,i){let s=e[Ir],r=i&&i.nonce;s?r&&s.setNonce(r):s=new $O(e,r),s.mount(Array.isArray(t)?t:[t],e)}}let Ml=new Map;class $O{constructor(e,t){let i=e.ownerDocument||e,s=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let r=Ml.get(i);if(r)return e[Ir]=r;this.sheet=new s.CSSStyleSheet,Ml.set(i,this)}else this.styleTag=i.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Ir]=this}mount(e,t){let i=this.sheet,s=0,r=0;for(let o=0;o<e.length;o++){let l=e[o],a=this.modules.indexOf(l);if(a<r&&a>-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h<l.rules.length;h++)i.insertRule(l.rules[h],s++)}else{for(;r<a;)s+=this.modules[r++].rules.length;s+=l.rules.length,r++}}if(i)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets]);else{let o="";for(let a=0;a<this.modules.length;a++)o+=this.modules[a].getRules()+`
+`;this.styleTag.textContent=o;let l=t.head||t;this.styleTag.parentNode!=l&&l.insertBefore(this.styleTag,l.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}}var Tt={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Ni={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},PO=typeof navigator<"u"&&/Mac/.test(navigator.platform),kO=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var he=0;he<10;he++)Tt[48+he]=Tt[96+he]=String(he);for(var he=1;he<=24;he++)Tt[he+111]="F"+he;for(var he=65;he<=90;he++)Tt[he]=String.fromCharCode(he+32),Ni[he]=String.fromCharCode(he);for(var Ks in Tt)Ni.hasOwnProperty(Ks)||(Ni[Ks]=Tt[Ks]);function vO(n){var e=PO&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||kO&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?Ni:Tt)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function Ii(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}function Gr(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}function ZO(n){let e=n.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function Nn(n,e){if(!e.anchorNode)return!1;try{return Gr(n,e.anchorNode)}catch{return!1}}function Gi(n){return n.nodeType==3?Ut(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function _i(n,e,t,i){return t?Wl(n,e,t,i,-1)||Wl(n,e,t,i,1):!1}function zt(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}function ls(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Wl(n,e,t,i,s){for(;;){if(n==t&&e==i)return!0;if(e==(s<0?0:ut(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;e=zt(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[e+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=s<0?ut(n):0}else return!1}}function ut(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function _o(n,e){let t=e?n.left:n.right;return{left:t,right:t,top:n.top,bottom:n.bottom}}function TO(n){let e=n.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function Oc(n,e){let t=e.width/n.offsetWidth,i=e.height/n.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-n.offsetWidth)<1)&&(t=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.height-n.offsetHeight)<1)&&(i=1),{scaleX:t,scaleY:i}}function CO(n,e,t,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let c=n,f=!1;c&&!f;)if(c.nodeType==1){let u,d=c==a.body,O=1,m=1;if(d)u=TO(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(f=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let S=c.getBoundingClientRect();({scaleX:O,scaleY:m}=Oc(c,S)),u={left:S.left,right:S.left+c.clientWidth*O,top:S.top,bottom:S.top+c.clientHeight*m}}let g=0,b=0;if(s=="nearest")e.top<u.top?(b=-(u.top-e.top+o),t>0&&e.bottom>u.bottom+b&&(b=e.bottom-u.bottom+b+o)):e.bottom>u.bottom&&(b=e.bottom-u.bottom+o,t<0&&e.top-b<u.top&&(b=-(u.top+b-e.top+o)));else{let S=e.bottom-e.top,w=u.bottom-u.top;b=(s=="center"&&S<=w?e.top+S/2-w/2:s=="start"||s=="center"&&t<0?e.top-o:e.bottom-w+o)-u.top}if(i=="nearest"?e.left<u.left?(g=-(u.left-e.left+r),t>0&&e.right>u.right+g&&(g=e.right-u.right+g+r)):e.right>u.right&&(g=e.right-u.right+r,t<0&&e.left<u.left+g&&(g=-(u.left+g-e.left+r))):g=(i=="center"?e.left+(e.right-e.left)/2-(u.right-u.left)/2:i=="start"==l?e.left-r:e.right-(u.right-u.left)+r)-u.left,g||b)if(d)h.scrollBy(g,b);else{let S=0,w=0;if(b){let Q=c.scrollTop;c.scrollTop+=b/m,w=(c.scrollTop-Q)*m}if(g){let Q=c.scrollLeft;c.scrollLeft+=g/O,S=(c.scrollLeft-Q)*O}e={left:e.left-S,top:e.top-w,right:e.right-S,bottom:e.bottom-w},S&&Math.abs(S-g)<1&&(i="nearest"),w&&Math.abs(w-b)<1&&(s="nearest")}if(d)break;c=c.assignedSlot||c.parentNode}else if(c.nodeType==11)c=c.host;else break}function RO(n){let e=n.ownerDocument;for(let t=n.parentNode;t&&t!=e.body;)if(t.nodeType==1){if(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth)return t;t=t.assignedSlot||t.parentNode}else if(t.nodeType==11)t=t.host;else break;return null}class AO{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:i}=e;this.set(t,Math.min(e.anchorOffset,t?ut(t):0),i,Math.min(e.focusOffset,i?ut(i):0))}set(e,t,i,s){this.anchorNode=e,this.anchorOffset=t,this.focusNode=i,this.focusOffset=s}}let Gt=null;function pc(n){if(n.setActive)return n.setActive();if(Gt)return n.focus(Gt);let e=[];for(let t=n;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(n.focus(Gt==null?{get preventScroll(){return Gt={preventScroll:!0},!0}}:void 0),!Gt){Gt=!1;for(let t=0;t<e.length;){let i=e[t++],s=e[t++],r=e[t++];i.scrollTop!=s&&(i.scrollTop=s),i.scrollLeft!=r&&(i.scrollLeft=r)}}}let Yl;function Ut(n,e,t=e){let i=Yl||(Yl=document.createRange());return i.setEnd(n,t),i.setStart(n,e),i}function si(n,e,t,i){let s={key:e,code:e,keyCode:t,which:t,cancelable:!0};i&&({altKey:s.altKey,ctrlKey:s.ctrlKey,shiftKey:s.shiftKey,metaKey:s.metaKey}=i);let r=new KeyboardEvent("keydown",s);r.synthetic=!0,n.dispatchEvent(r);let o=new KeyboardEvent("keyup",s);return o.synthetic=!0,n.dispatchEvent(o),r.defaultPrevented||o.defaultPrevented}function XO(n){for(;n;){if(n&&(n.nodeType==9||n.nodeType==11&&n.host))return n;n=n.assignedSlot||n.parentNode}return null}function mc(n){for(;n.attributes.length;)n.removeAttributeNode(n.attributes[0])}function MO(n,e){let t=e.focusNode,i=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=i)return!1;for(i=Math.min(i,ut(t));;)if(i){if(t.nodeType!=1)return!1;let s=t.childNodes[i-1];s.contentEditable=="false"?i--:(t=s,i=ut(t))}else{if(t==n)return!0;i=zt(t),t=t.parentNode}}function gc(n){return n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function bc(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&i>0)return{node:t,offset:i};if(t.nodeType==1&&i>0){if(t.contentEditable=="false")return null;t=t.childNodes[i-1],i=ut(t)}else if(t.parentNode&&!ls(t))i=zt(t),t=t.parentNode;else return null}}function yc(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&i<t.nodeValue.length)return{node:t,offset:i};if(t.nodeType==1&&i<t.childNodes.length){if(t.contentEditable=="false")return null;t=t.childNodes[i],i=0}else if(t.parentNode&&!ls(t))i=zt(t)+1,t=t.parentNode;else return null}}class Oe{constructor(e,t,i=!0){this.node=e,this.offset=t,this.precise=i}static before(e,t){return new Oe(e.parentNode,zt(e),t)}static after(e,t){return new Oe(e.parentNode,zt(e)+1,t)}}const Do=[];class B{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e){let t=this.posAtStart;for(let i of this.children){if(i==e)return t;t+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}sync(e,t){if(this.flags&2){let i=this.dom,s=null,r;for(let o of this.children){if(o.flags&7){if(!o.dom&&(r=s?s.nextSibling:i.firstChild)){let l=B.get(r);(!l||!l.parent&&l.canReuseDOM(o))&&o.reuseDOM(r)}o.sync(e,t),o.flags&=-8}if(r=s?s.nextSibling:i.firstChild,t&&!t.written&&t.node==i&&r!=o.dom&&(t.written=!0),o.dom.parentNode==i)for(;r&&r!=o.dom;)r=ql(r);else i.insertBefore(o.dom,r);s=o.dom}for(r=s?s.nextSibling:i.firstChild,r&&t&&t.node==i&&(t.written=!0);r;)r=ql(r)}else if(this.flags&1)for(let i of this.children)i.flags&7&&(i.sync(e,t),i.flags&=-8)}reuseDOM(e){}localPosFromDOM(e,t){let i;if(e==this.dom)i=this.dom.childNodes[t];else{let s=ut(e)==0?0:t==0?-1:1;for(;;){let r=e.parentNode;if(r==this.dom)break;s==0&&r.firstChild!=r.lastChild&&(e==r.firstChild?s=-1:s=1),e=r}s<0?i=e:i=e.nextSibling}if(i==this.dom.firstChild)return 0;for(;i&&!B.get(i);)i=i.nextSibling;if(!i)return this.length;for(let s=0,r=0;;s++){let o=this.children[s];if(o.dom==i)return r;r+=o.length+o.breakAfter}}domBoundsAround(e,t,i=0){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,c=i;a<this.children.length;a++){let f=this.children[a],u=h+f.length;if(h<e&&u>t)return f.domBoundsAround(e,t,h);if(u>=e&&s==-1&&(s=a,r=h),h>t&&f.dom.parentNode==this.dom){o=a,l=c;break}c=u,h=u+f.breakAfter}return{from:r,to:l<0?i+this.length:l,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:o<this.children.length&&o>=0?this.children[o].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let t=this.parent;t;t=t.parent){if(e&&(t.flags|=2),t.flags&1)return;t.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let t=e.parent;if(!t)return e;e=t}}replaceChildren(e,t,i=Do){this.markDirty();for(let s=e;s<t;s++){let r=this.children[s];r.parent==this&&i.indexOf(r)<0&&r.destroy()}this.children.splice(e,t-e,...i);for(let s=0;s<i.length;s++)i[s].setParent(this)}ignoreMutation(e){return!1}ignoreEvent(e){return!1}childCursor(e=this.length){return new Sc(this.children,e,this.children.length)}childPos(e,t=1){return this.childCursor().findPos(e,t)}toString(){let e=this.constructor.name.replace("View","");return e+(this.children.length?"("+this.children.join()+")":this.length?"["+(e=="Text"?this.text:this.length)+"]":"")+(this.breakAfter?"#":"")}static get(e){return e.cmView}get isEditable(){return!0}get isWidget(){return!1}get isHidden(){return!1}merge(e,t,i,s,r,o){return!1}become(e){return!1}canReuseDOM(e){return e.constructor==this.constructor&&!((this.flags|e.flags)&8)}getSide(){return 0}destroy(){for(let e of this.children)e.parent==this&&e.destroy();this.parent=null}}B.prototype.breakAfter=0;function ql(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}class Sc{constructor(e,t,i){this.children=e,this.pos=t,this.i=i,this.off=0}findPos(e,t=1){for(;;){if(e>this.pos||e==this.pos&&(t>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}}function xc(n,e,t,i,s,r,o,l,a){let{children:h}=n,c=h.length?h[e]:null,f=r.length?r[r.length-1]:null,u=f?f.breakAfter:o;if(!(e==i&&c&&!o&&!u&&r.length<2&&c.merge(t,s,r.length?f:null,t==0,l,a))){if(i<h.length){let d=h[i];d&&(s<d.length||d.breakAfter&&(f!=null&&f.breakAfter))?(e==i&&(d=d.split(s),s=0),!u&&f&&d.merge(0,s,f,!0,0,a)?r[r.length-1]=d:((s||d.children.length&&!d.children[0].length)&&d.merge(0,s,null,!1,0,a),r.push(d))):d!=null&&d.breakAfter&&(f?f.breakAfter=1:o=1),i++}for(c&&(c.breakAfter=o,t>0&&(!o&&r.length&&c.merge(t,c.length,r[0],!1,l,0)?c.breakAfter=r.shift().breakAfter:(t<c.length||c.children.length&&c.children[c.children.length-1].length==0)&&c.merge(t,c.length,null,!1,l,0),e++));e<i&&r.length;)if(h[i-1].become(r[r.length-1]))i--,r.pop(),a=r.length?0:l;else if(h[e].become(r[0]))e++,r.shift(),l=r.length?0:a;else break;!r.length&&e&&i<h.length&&!h[e-1].breakAfter&&h[i].merge(0,0,h[e-1],!1,l,a)&&e--,(e<i||r.length)&&n.replaceChildren(e,i,r)}}function Qc(n,e,t,i,s,r){let o=n.childCursor(),{i:l,off:a}=o.findPos(t,1),{i:h,off:c}=o.findPos(e,-1),f=e-t;for(let u of i)f+=u.length;n.length+=f,xc(n,h,c,l,a,i,0,s,r)}let $e=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},Lr=typeof document<"u"?document:{documentElement:{style:{}}};const Fr=/Edge\/(\d+)/.exec($e.userAgent),wc=/MSIE \d/.test($e.userAgent),Hr=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec($e.userAgent),qs=!!(wc||Hr||Fr),El=!qs&&/gecko\/(\d+)/i.test($e.userAgent),Js=!qs&&/Chrome\/(\d+)/.exec($e.userAgent),Vl="webkitFontSmoothing"in Lr.documentElement.style,$c=!qs&&/Apple Computer/.test($e.vendor),_l=$c&&(/Mobile\/\w+/.test($e.userAgent)||$e.maxTouchPoints>2);var Z={mac:_l||/Mac/.test($e.platform),windows:/Win/.test($e.platform),linux:/Linux|X11/.test($e.platform),ie:qs,ie_version:wc?Lr.documentMode||6:Hr?+Hr[1]:Fr?+Fr[1]:0,gecko:El,gecko_version:El?+(/Firefox\/(\d+)/.exec($e.userAgent)||[0,0])[1]:0,chrome:!!Js,chrome_version:Js?+Js[1]:0,ios:_l,android:/Android\b/.test($e.userAgent),webkit:Vl,safari:$c,webkit_version:Vl?+(/\bAppleWebKit\/(\d+)/.exec($e.userAgent)||[0,0])[1]:0,tabSize:Lr.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};const WO=256;class je extends B{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e,t){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(t&&t.node==this.dom&&(t.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,t,i){return this.flags&8||i&&(!(i instanceof je)||this.length-(t-e)+i.length>WO||i.flags&8)?!1:(this.text=this.text.slice(0,e)+(i?i.text:"")+this.text.slice(t),this.markDirty(),!0)}split(e){let t=new je(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),t.flags|=this.flags&8,t}localPosFromDOM(e,t){return e==this.dom?t:t?this.text.length:0}domAtPos(e){return new Oe(this.dom,e)}domBoundsAround(e,t,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,t){return YO(this.dom,e,t)}}class dt extends B{constructor(e,t=[],i=0){super(),this.mark=e,this.children=t,this.length=i;for(let s of t)s.setParent(this)}setAttrs(e){if(mc(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let t in this.mark.attrs)e.setAttribute(t,this.mark.attrs[t]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,t)}merge(e,t,i,s,r,o){return i&&(!(i instanceof dt&&i.mark.eq(this.mark))||e&&r<=0||t<this.length&&o<=0)?!1:(Qc(this,e,t,i?i.children.slice():[],r-1,o-1),this.markDirty(),!0)}split(e){let t=[],i=0,s=-1,r=0;for(let l of this.children){let a=i+l.length;a>e&&t.push(i<e?l.split(e-i):l),s<0&&i>=e&&(s=r),i=a,r++}let o=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new dt(this.mark,t,o)}domAtPos(e){return Pc(this,e)}coordsAt(e,t){return vc(this,e,t)}}function YO(n,e,t){let i=n.nodeValue.length;e>i&&(e=i);let s=e,r=e,o=0;e==0&&t<0||e==i&&t>=0?Z.chrome||Z.gecko||(e?(s--,o=1):r<i&&(r++,o=-1)):t<0?s--:r<i&&r++;let l=Ut(n,s,r).getClientRects();if(!l.length)return null;let a=l[(o?o<0:t>=0)?0:l.length-1];return Z.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?_o(a,o<0):a||null}class wt extends B{static create(e,t,i){return new wt(e,t,i)}constructor(e,t,i){super(),this.widget=e,this.length=t,this.side=i,this.prevWidget=null}split(e){let t=wt.create(this.widget,this.length-e,this.side);return this.length-=e,t}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,t,i,s,r,o){return i&&(!(i instanceof wt)||!this.widget.compare(i.widget)||e>0&&r<=0||t<this.length&&o<=0)?!1:(this.length=e+(i?i.length:0)+(this.length-t),!0)}become(e){return e instanceof wt&&e.side==this.side&&this.widget.constructor==e.widget.constructor?(this.widget.compare(e.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,!0):!1}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get overrideDOMText(){if(this.length==0)return _.empty;let e=this;for(;e.parent;)e=e.parent;let{view:t}=e,i=t&&t.state.doc,s=this.posAtStart;return i?i.slice(s,s+this.length):_.empty}domAtPos(e){return(this.length?e==0:this.side>0)?Oe.before(this.dom):Oe.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,t){let i=this.widget.coordsAt(this.dom,e,t);if(i)return i;let s=this.dom.getClientRects(),r=null;if(!s.length)return null;let o=this.side?this.side<0:e>0;for(let l=o?s.length-1:0;r=s[l],!(e>0?l==0:l==s.length-1||r.top<r.bottom);l+=o?-1:1);return _o(r,!o)}get isEditable(){return!1}get isWidget(){return!0}get isHidden(){return this.widget.isHidden}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class ci extends B{constructor(e){super(),this.side=e}get length(){return 0}merge(){return!1}become(e){return e instanceof ci&&e.side==this.side}split(){return new ci(this.side)}sync(){if(!this.dom){let e=document.createElement("img");e.className="cm-widgetBuffer",e.setAttribute("aria-hidden","true"),this.setDOM(e)}}getSide(){return this.side}domAtPos(e){return this.side>0?Oe.before(this.dom):Oe.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return _.empty}get isHidden(){return!0}}je.prototype.children=wt.prototype.children=ci.prototype.children=Do;function Pc(n,e){let t=n.dom,{children:i}=n,s=0;for(let r=0;s<i.length;s++){let o=i[s],l=r+o.length;if(!(l==r&&o.getSide()<=0)){if(e>r&&e<l&&o.dom.parentNode==t)return o.domAtPos(e-r);if(e<=r)break;r=l}}for(let r=s;r>0;r--){let o=i[r-1];if(o.dom.parentNode==t)return o.domAtPos(o.length)}for(let r=s;r<i.length;r++){let o=i[r];if(o.dom.parentNode==t)return o.domAtPos(0)}return new Oe(t,0)}function kc(n,e,t){let i,{children:s}=n;t>0&&e instanceof dt&&s.length&&(i=s[s.length-1])instanceof dt&&i.mark.eq(e.mark)?kc(i,e.children[0],t-1):(s.push(e),e.setParent(n)),n.length+=e.length}function vc(n,e,t){let i=null,s=-1,r=null,o=-1;function l(h,c){for(let f=0,u=0;f<h.children.length&&u<=c;f++){let d=h.children[f],O=u+d.length;O>=c&&(d.children.length?l(d,c-u):(!r||r.isHidden&&t>0)&&(O>c||u==O&&d.getSide()>0)?(r=d,o=c-u):(u<c||u==O&&d.getSide()<0&&!d.isHidden)&&(i=d,s=c-u)),u=O}}l(n,e);let a=(t<0?i:r)||i||r;return a?a.coordsAt(Math.max(0,a==i?s:o),t):qO(n)}function qO(n){let e=n.dom.lastChild;if(!e)return n.dom.getBoundingClientRect();let t=Gi(e);return t[t.length-1]||null}function Kr(n,e){for(let t in n)t=="class"&&e.class?e.class+=" "+n.class:t=="style"&&e.style?e.style+=";"+n.style:e[t]=n[t];return e}const Dl=Object.create(null);function as(n,e,t){if(n==e)return!0;n||(n=Dl),e||(e=Dl);let i=Object.keys(n),s=Object.keys(e);if(i.length-(t&&i.indexOf(t)>-1?1:0)!=s.length-(t&&s.indexOf(t)>-1?1:0))return!1;for(let r of i)if(r!=t&&(s.indexOf(r)==-1||n[r]!==e[r]))return!1;return!0}function Jr(n,e,t){let i=!1;if(e)for(let s in e)t&&s in t||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(t)for(let s in t)e&&e[s]==t[s]||(i=!0,s=="style"?n.style.cssText=t[s]:n.setAttribute(s,t[s]));return i}function EO(n){let e=Object.create(null);for(let t=0;t<n.attributes.length;t++){let i=n.attributes[t];e[i.name]=i.value}return e}class te extends B{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,t,i,s,r,o){if(i){if(!(i instanceof te))return!1;this.dom||i.transferDOM(this)}return s&&this.setDeco(i?i.attrs:null),Qc(this,e,t,i?i.children.slice():[],r,o),!0}split(e){let t=new te;if(t.breakAfter=this.breakAfter,this.length==0)return t;let{i,off:s}=this.childPos(e);s&&(t.append(this.children[i].split(s),0),this.children[i].merge(s,this.children[i].length,null,!1,0,0),i++);for(let r=i;r<this.children.length;r++)t.append(this.children[r],0);for(;i>0&&this.children[i-1].length==0;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=e,t}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){as(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,t){kc(this,e,t)}addLineDeco(e){let t=e.spec.attributes,i=e.spec.class;t&&(this.attrs=Kr(t,this.attrs||{})),i&&(this.attrs=Kr({class:i},this.attrs||{}))}domAtPos(e){return Pc(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,t){var i;this.dom?this.flags&4&&(mc(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Jr(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,t);let s=this.dom.lastChild;for(;s&&B.get(s)instanceof dt;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((i=B.get(s))===null||i===void 0?void 0:i.isEditable)==!1&&(!Z.ios||!this.children.some(r=>r instanceof je))){let r=document.createElement("BR");r.cmIgnore=!0,this.dom.appendChild(r)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,t;for(let i of this.children){if(!(i instanceof je)||/[^ -~]/.test(i.text))return null;let s=Gi(i.dom);if(s.length!=1)return null;e+=s[0].width,t=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(e,t){let i=vc(this,e,t);if(!this.children.length&&i&&this.parent){let{heightOracle:s}=this.parent.view.viewState,r=i.bottom-i.top;if(Math.abs(r-s.lineHeight)<2&&s.textHeight<r){let o=(r-s.textHeight)/2;return{top:i.top+o,bottom:i.bottom-o,left:i.left,right:i.left}}}return i}become(e){return e instanceof te&&this.children.length==0&&e.children.length==0&&as(this.attrs,e.attrs)&&this.breakAfter==e.breakAfter}covers(){return!0}static find(e,t){for(let i=0,s=0;i<e.children.length;i++){let r=e.children[i],o=s+r.length;if(o>=t){if(r instanceof te)return r;if(o>t)break}s=o+r.breakAfter}return null}}class ct extends B{constructor(e,t,i){super(),this.widget=e,this.length=t,this.deco=i,this.breakAfter=0,this.prevWidget=null}merge(e,t,i,s,r,o){return i&&(!(i instanceof ct)||!this.widget.compare(i.widget)||e>0&&r<=0||t<this.length&&o<=0)?!1:(this.length=e+(i?i.length:0)+(this.length-t),!0)}domAtPos(e){return e==0?Oe.before(this.dom):Oe.after(this.dom,e==this.length)}split(e){let t=this.length-e;this.length=e;let i=new ct(this.widget,t,this.deco);return i.breakAfter=this.breakAfter,i}get children(){return Do}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}get overrideDOMText(){return this.parent?this.parent.view.state.doc.slice(this.posAtStart,this.posAtEnd):_.empty}domBoundsAround(){return null}become(e){return e instanceof ct&&e.widget.constructor==this.widget.constructor?(e.widget.compare(this.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,this.deco=e.deco,this.breakAfter=e.breakAfter,!0):!1}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get isEditable(){return!1}get isWidget(){return!0}coordsAt(e,t){return this.widget.coordsAt(this.dom,e,t)}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}covers(e){let{startSide:t,endSide:i}=this.deco;return t==i?!1:e<0?t<0:i>0}}class mt{eq(e){return!1}updateDOM(e,t){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,i){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}}var be=function(n){return n[n.Text=0]="Text",n[n.WidgetBefore=1]="WidgetBefore",n[n.WidgetAfter=2]="WidgetAfter",n[n.WidgetRange=3]="WidgetRange",n}(be||(be={}));class R extends Dt{constructor(e,t,i,s){super(),this.startSide=e,this.endSide=t,this.widget=i,this.spec=s}get heightRelevant(){return!1}static mark(e){return new cn(e)}static widget(e){let t=Math.max(-1e4,Math.min(1e4,e.side||0)),i=!!e.block;return t+=i&&!e.inlineOrder?t>0?3e8:-4e8:t>0?1e8:-1e8,new Ct(e,t,t,i,e.widget||null,!1)}static replace(e){let t=!!e.block,i,s;if(e.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=Zc(e,t);i=(r?t?-3e8:-1:5e8)-1,s=(o?t?2e8:1:-6e8)+1}return new Ct(e,i,s,t,e.widget||null,!0)}static line(e){return new fn(e)}static set(e,t=!1){return V.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}R.none=V.empty;class cn extends R{constructor(e){let{start:t,end:i}=Zc(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var t,i;return this==e||e instanceof cn&&this.tagName==e.tagName&&(this.class||((t=this.attrs)===null||t===void 0?void 0:t.class))==(e.class||((i=e.attrs)===null||i===void 0?void 0:i.class))&&as(this.attrs,e.attrs,"class")}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}}cn.prototype.point=!1;class fn extends R{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof fn&&this.spec.class==e.spec.class&&as(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}}fn.prototype.mapMode=ce.TrackBefore;fn.prototype.point=!0;class Ct extends R{constructor(e,t,i,s,r,o){super(t,i,r,e),this.block=s,this.isReplace=o,this.mapMode=s?t<=0?ce.TrackBefore:ce.TrackAfter:ce.TrackDel}get type(){return this.startSide!=this.endSide?be.WidgetRange:this.startSide<=0?be.WidgetBefore:be.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Ct&&VO(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}}Ct.prototype.point=!0;function Zc(n,e=!1){let{inclusiveStart:t,inclusiveEnd:i}=n;return t==null&&(t=n.inclusive),i==null&&(i=n.inclusive),{start:t??e,end:i??e}}function VO(n,e){return n==e||!!(n&&e&&n.compare(e))}function eo(n,e,t,i=0){let s=t.length-1;s>=0&&t[s]+i>=n?t[s]=Math.max(t[s],e):t.push(n,e)}class Di{constructor(e,t,i,s){this.doc=e,this.pos=t,this.end=i,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=t}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof ct&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new te),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(Qn(new ci(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof ct)&&this.getLine()}buildText(e,t,i){for(;e>0;){if(this.textOff==this.text.length){let{value:r,lineBreak:o,done:l}=this.cursor.next(this.skip);if(this.skip=0,l)throw new Error("Ran out of text content when drawing inline views");if(o){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=r,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(t.slice(t.length-i)),this.getLine().append(Qn(new je(this.text.slice(this.textOff,this.textOff+s)),t),i),this.atCursorPos=!0,this.textOff+=s,e-=s,i=0}}span(e,t,i,s){this.buildText(t-e,i,s),this.pos=t,this.openStart<0&&(this.openStart=s)}point(e,t,i,s,r,o){if(this.disallowBlockEffectsFor[o]&&i instanceof Ct){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(t>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=t-e;if(i instanceof Ct)if(i.block)i.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new ct(i.widget||fi.block,l,i));else{let a=wt.create(i.widget||fi.inline,l,l?0:i.startSide),h=this.atCursorPos&&!a.isEditable&&r<=s.length&&(e<t||i.startSide>0),c=!a.isEditable&&(e<t||r>s.length||i.startSide<=0),f=this.getLine();this.pendingBuffer==2&&!h&&!a.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),h&&(f.append(Qn(new ci(1),s),r),r=s.length+Math.max(0,r-s.length)),f.append(Qn(a,s),r),this.atCursorPos=c,this.pendingBuffer=c?e<t||r>s.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=t),this.openStart<0&&(this.openStart=r)}static build(e,t,i,s,r){let o=new Di(e,t,i,r);return o.openEnd=V.spans(s,t,i,o),o.openStart<0&&(o.openStart=o.openEnd),o.finish(o.openEnd),o}}function Qn(n,e){for(let t of e)n=new dt(t,[n],n.length);return n}class fi extends mt{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}fi.inline=new fi("span");fi.block=new fi("div");var L=function(n){return n[n.LTR=0]="LTR",n[n.RTL=1]="RTL",n}(L||(L={}));const jt=L.LTR,zo=L.RTL;function Tc(n){let e=[];for(let t=0;t<n.length;t++)e.push(1<<+n[t]);return e}const _O=Tc("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),DO=Tc("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),to=Object.create(null),Le=[];for(let n of["()","[]","{}"]){let e=n.charCodeAt(0),t=n.charCodeAt(1);to[e]=t,to[t]=-e}function Cc(n){return n<=247?_O[n]:1424<=n&&n<=1524?2:1536<=n&&n<=1785?DO[n-1536]:1774<=n&&n<=2220?4:8192<=n&&n<=8204?256:64336<=n&&n<=65023?4:1}const zO=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/;class $t{get dir(){return this.level%2?zo:jt}constructor(e,t,i){this.from=e,this.to=t,this.level=i}side(e,t){return this.dir==t==e?this.to:this.from}forward(e,t){return e==(this.dir==t)}static find(e,t,i,s){let r=-1;for(let o=0;o<e.length;o++){let l=e[o];if(l.from<=t&&l.to>=t){if(l.level==i)return o;(r<0||(s!=0?s<0?l.from<t:l.to>t:e[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}}function Rc(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++){let i=n[t],s=e[t];if(i.from!=s.from||i.to!=s.to||i.direction!=s.direction||!Rc(i.inner,s.inner))return!1}return!0}const j=[];function UO(n,e,t,i,s){for(let r=0;r<=i.length;r++){let o=r?i[r-1].to:e,l=r<i.length?i[r].from:t,a=r?256:s;for(let h=o,c=a,f=a;h<l;h++){let u=Cc(n.charCodeAt(h));u==512?u=c:u==8&&f==4&&(u=16),j[h]=u==4?2:u,u&7&&(f=u),c=u}for(let h=o,c=a,f=a;h<l;h++){let u=j[h];if(u==128)h<l-1&&c==j[h+1]&&c&24?u=j[h]=c:j[h]=256;else if(u==64){let d=h+1;for(;d<l&&j[d]==64;)d++;let O=h&&c==8||d<t&&j[d]==8?f==1?1:8:256;for(let m=h;m<d;m++)j[m]=O;h=d-1}else u==8&&f==1&&(j[h]=1);c=u,u&7&&(f=u)}}}function jO(n,e,t,i,s){let r=s==1?2:1;for(let o=0,l=0,a=0;o<=i.length;o++){let h=o?i[o-1].to:e,c=o<i.length?i[o].from:t;for(let f=h,u,d,O;f<c;f++)if(d=to[u=n.charCodeAt(f)])if(d<0){for(let m=l-3;m>=0;m-=3)if(Le[m+1]==-d){let g=Le[m+2],b=g&2?s:g&4?g&1?r:s:0;b&&(j[f]=j[Le[m]]=b),l=m;break}}else{if(Le.length==189)break;Le[l++]=f,Le[l++]=u,Le[l++]=a}else if((O=j[f])==2||O==1){let m=O==s;a=m?0:1;for(let g=l-3;g>=0;g-=3){let b=Le[g+2];if(b&2)break;if(m)Le[g+2]|=2;else{if(b&4)break;Le[g+2]|=4}}}}}function BO(n,e,t,i){for(let s=0,r=i;s<=t.length;s++){let o=s?t[s-1].to:n,l=s<t.length?t[s].from:e;for(let a=o;a<l;){let h=j[a];if(h==256){let c=a+1;for(;;)if(c==l){if(s==t.length)break;c=t[s++].to,l=s<t.length?t[s].from:e}else if(j[c]==256)c++;else break;let f=r==1,u=(c<e?j[c]:i)==1,d=f==u?f?1:2:i;for(let O=c,m=s,g=m?t[m-1].to:n;O>a;)O==g&&(O=t[--m].from,g=m?t[m-1].to:n),j[--O]=d;a=c}else r=h,a++}}}function io(n,e,t,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=e,h=0;a<t;){let c=!0,f=!1;if(h==r.length||a<r[h].from){let m=j[a];m!=l&&(c=!1,f=m==16)}let u=!c&&l==1?[]:null,d=c?i:i+1,O=a;e:for(;;)if(h<r.length&&O==r[h].from){if(f)break e;let m=r[h];if(!c)for(let g=m.to,b=h+1;;){if(g==t)break e;if(b<r.length&&r[b].from==g)g=r[b++].to;else{if(j[g]==l)break e;break}}if(h++,u)u.push(m);else{m.from>a&&o.push(new $t(a,m.from,d));let g=m.direction==jt!=!(d%2);no(n,g?i+1:i,s,m.inner,m.from,m.to,o),a=m.to}O=m.to}else{if(O==t||(c?j[O]!=l:j[O]==l))break;O++}u?io(n,a,O,i+1,s,u,o):a<O&&o.push(new $t(a,O,d)),a=O}else for(let a=t,h=r.length;a>e;){let c=!0,f=!1;if(!h||a>r[h-1].to){let m=j[a-1];m!=l&&(c=!1,f=m==16)}let u=!c&&l==1?[]:null,d=c?i:i+1,O=a;e:for(;;)if(h&&O==r[h-1].to){if(f)break e;let m=r[--h];if(!c)for(let g=m.from,b=h;;){if(g==e)break e;if(b&&r[b-1].to==g)g=r[--b].from;else{if(j[g-1]==l)break e;break}}if(u)u.push(m);else{m.to<a&&o.push(new $t(m.to,a,d));let g=m.direction==jt!=!(d%2);no(n,g?i+1:i,s,m.inner,m.from,m.to,o),a=m.from}O=m.from}else{if(O==e||(c?j[O-1]!=l:j[O-1]==l))break;O--}u?io(n,O,a,i+1,s,u,o):O<a&&o.push(new $t(O,a,d)),a=O}}function no(n,e,t,i,s,r,o){let l=e%2?2:1;UO(n,s,r,i,l),jO(n,s,r,i,l),BO(s,r,i,l),io(n,s,r,e,t,i,o)}function NO(n,e,t){if(!n)return[new $t(0,0,e==zo?1:0)];if(e==jt&&!t.length&&!zO.test(n))return Ac(n.length);if(t.length)for(;n.length>j.length;)j[j.length]=256;let i=[],s=e==jt?0:1;return no(n,s,s,t,0,n.length,i),i}function Ac(n){return[new $t(0,n,0)]}let Xc="";function IO(n,e,t,i,s){var r;let o=i.head-n.from,l=$t.find(e,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=e[l],h=a.side(s,t);if(o==h){let u=l+=s?1:-1;if(u<0||u>=e.length)return null;a=e[l=u],o=a.side(!s,t),h=a.side(s,t)}let c=ue(n.text,o,a.forward(s,t));(c<a.from||c>a.to)&&(c=h),Xc=n.text.slice(Math.min(o,c),Math.max(o,c));let f=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return f&&c==h&&f.level+(s?0:1)<a.level?y.cursor(f.side(!s,t)+n.from,f.forward(s,t)?1:-1,f.level):y.cursor(c+n.from,a.forward(s,t)?-1:1,a.level)}function GO(n,e,t){for(let i=e;i<t;i++){let s=Cc(n.charCodeAt(i));if(s==1)return jt;if(s==2||s==4)return zo}return jt}const Mc=T.define(),Wc=T.define(),Yc=T.define(),qc=T.define(),so=T.define(),Ec=T.define(),Vc=T.define(),_c=T.define({combine:n=>n.some(e=>e)}),Dc=T.define({combine:n=>n.some(e=>e)}),zc=T.define();class ri{constructor(e,t="nearest",i="nearest",s=5,r=5,o=!1){this.range=e,this.y=t,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(e){return e.empty?this:new ri(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new ri(y.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const wn=A.define({map:(n,e)=>n.map(e)}),Uc=A.define();function ke(n,e,t){let i=n.facet(qc);i.length?i[0](e):window.onerror?window.onerror(String(e),t,void 0,void 0,e):t?console.error(t+":",e):console.error(e)}const St=T.define({combine:n=>n.length?n[0]:!0});let LO=0;const Ri=T.define();class ne{constructor(e,t,i,s,r){this.id=e,this.create=t,this.domEventHandlers=i,this.domEventObservers=s,this.extension=r(this)}static define(e,t){const{eventHandlers:i,eventObservers:s,provide:r,decorations:o}=t||{};return new ne(LO++,e,i,s,l=>{let a=[Ri.of(l)];return o&&a.push(Li.of(h=>{let c=h.plugin(l);return c?o(c):R.none})),r&&a.push(r(l)),a})}static fromClass(e,t){return ne.define(i=>new e(i),t)}}class er{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(i){if(ke(t.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(t){ke(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(i){ke(e.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const jc=T.define(),Uo=T.define(),Li=T.define(),Bc=T.define(),jo=T.define(),Nc=T.define();function zl(n,e){let t=n.state.facet(Nc);if(!t.length)return t;let i=t.map(r=>r instanceof Function?r(n):r),s=[];return V.spans(i,e.from,e.to,{point(){},span(r,o,l,a){let h=r-e.from,c=o-e.from,f=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,O;if(d==null&&(d=GO(e.text,h,c)),a>0&&f.length&&(O=f[f.length-1]).to==h&&O.direction==d)O.to=c,f=O.inner;else{let m={from:h,to:c,direction:d,inner:[]};f.push(m),f=m.inner}}}}),s}const Ic=T.define();function Gc(n){let e=0,t=0,i=0,s=0;for(let r of n.state.facet(Ic)){let o=r(n);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:e,right:t,top:i,bottom:s}}const Ai=T.define();class _e{constructor(e,t,i,s){this.fromA=e,this.toA=t,this.fromB=i,this.toB=s}join(e){return new _e(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,i=this;for(;t>0;t--){let s=e[t-1];if(!(s.fromA>i.toA)){if(s.toA<i.fromA)break;i=i.join(s),e.splice(t-1,1)}}return e.splice(t,0,i),e}static extendWithRanges(e,t){if(t.length==0)return e;let i=[];for(let s=0,r=0,o=0,l=0;;s++){let a=s==e.length?null:e[s],h=o-l,c=a?a.fromB:1e9;for(;r<t.length&&t[r]<c;){let f=t[r],u=t[r+1],d=Math.max(l,f),O=Math.min(c,u);if(d<=O&&new _e(d+h,O+h,d,O).addToSet(i),u>c)break;r+=2}if(!a)return i;new _e(a.fromA,a.toA,a.fromB,a.toB).addToSet(i),o=a.toA,l=a.toB}}}class hs{constructor(e,t,i){this.view=e,this.state=t,this.transactions=i,this.flags=0,this.startState=e.state,this.changes=re.empty(this.startState.doc.length);for(let r of i)this.changes=this.changes.compose(r.changes);let s=[];this.changes.iterChangedRanges((r,o,l,a)=>s.push(new _e(r,o,l,a))),this.changedRanges=s}static create(e,t,i){return new hs(e,t,i)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class Ul extends B{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=R.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new te],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new _e(0,0,0,e.state.doc.length)],0,null)}update(e){var t;let i=e.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:h,toA:c})=>c<this.minWidthFrom||h>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?s=this.domChanged.newSel.head:!ip(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let r=s>-1?HO(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:h,to:c}=this.hasComposition;i=new _e(h,c,e.changes.mapPos(h,-1),e.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(Z.ie||Z.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.updateDeco(),a=ep(o,l,e.changes);return i=_e.extendWithRanges(i,a),!(this.flags&7)&&i.length==0?!1:(this.updateInner(i,e.startState.doc.length,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,t,i);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let o=Z.chrome||Z.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,o),this.flags&=-8,o&&(o.written||s.selectionRange.focusNode!=o.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(o=>o.flags&=-9);let r=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let o of this.children)o instanceof ct&&o.widget instanceof jl&&r.push(o.dom);s.updateGaps(r)}updateChildren(e,t,i){let s=i?i.range.addToSet(e.slice()):e,r=this.childCursor(t);for(let o=s.length-1;;o--){let l=o>=0?s[o]:null;if(!l)break;let{fromA:a,toA:h,fromB:c,toB:f}=l,u,d,O,m;if(i&&i.range.fromB<f&&i.range.toB>c){let Q=Di.build(this.view.state.doc,c,i.range.fromB,this.decorations,this.dynamicDecorationMap),x=Di.build(this.view.state.doc,i.range.toB,f,this.decorations,this.dynamicDecorationMap);d=Q.breakAtStart,O=Q.openStart,m=x.openEnd;let k=this.compositionView(i);x.breakAtStart?k.breakAfter=1:x.content.length&&k.merge(k.length,k.length,x.content[0],!1,x.openStart,0)&&(k.breakAfter=x.content[0].breakAfter,x.content.shift()),Q.content.length&&k.merge(0,0,Q.content[Q.content.length-1],!0,0,Q.openEnd)&&Q.content.pop(),u=Q.content.concat(k).concat(x.content)}else({content:u,breakAtStart:d,openStart:O,openEnd:m}=Di.build(this.view.state.doc,c,f,this.decorations,this.dynamicDecorationMap));let{i:g,off:b}=r.findPos(h,1),{i:S,off:w}=r.findPos(a,-1);xc(this,S,w,g,b,u,d,O,m)}i&&this.fixCompositionDOM(i)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let i of t.effects)i.is(Uc)&&(this.editContextFormatting=i.value)}compositionView(e){let t=new je(e.text.nodeValue);t.flags|=8;for(let{deco:s}of e.marks)t=new dt(s,[t],t.length);let i=new te;return i.append(t,0),i}fixCompositionDOM(e){let t=(r,o)=>{o.flags|=8|(o.children.some(a=>a.flags&7)?1:0),this.markedForComposition.add(o);let l=B.get(r);l&&l!=o&&(l.dom=null),o.setDOM(r)},i=this.childPos(e.range.fromB,1),s=this.children[i.i];t(e.line,s);for(let r=e.marks.length-1;r>=-1;r--)i=s.childPos(i.off,1),s=s.children[i.i],t(r>=0?e.marks[r].node:e.text,s)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let i=this.view.root.activeElement,s=i==this.dom,r=!s&&Nn(this.dom,this.view.observer.selectionRange)&&!(i&&this.dom.contains(i));if(!(s||t||r))return;let o=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,a=this.moveToLine(this.domAtPos(l.anchor)),h=l.empty?a:this.moveToLine(this.domAtPos(l.head));if(Z.gecko&&l.empty&&!this.hasComposition&&FO(a)){let f=document.createTextNode("");this.view.observer.ignore(()=>a.node.insertBefore(f,a.node.childNodes[a.offset]||null)),a=h=new Oe(f,0),o=!0}let c=this.view.observer.selectionRange;(o||!c.focusNode||(!_i(a.node,a.offset,c.anchorNode,c.anchorOffset)||!_i(h.node,h.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,l))&&(this.view.observer.ignore(()=>{Z.android&&Z.chrome&&this.dom.contains(c.focusNode)&&tp(c.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let f=Ii(this.view.root);if(f)if(l.empty){if(Z.gecko){let u=KO(a.node,a.offset);if(u&&u!=3){let d=(u==1?bc:yc)(a.node,a.offset);d&&(a=new Oe(d.node,d.offset))}}f.collapse(a.node,a.offset),l.bidiLevel!=null&&f.caretBidiLevel!==void 0&&(f.caretBidiLevel=l.bidiLevel)}else if(f.extend){f.collapse(a.node,a.offset);try{f.extend(h.node,h.offset)}catch{}}else{let u=document.createRange();l.anchor>l.head&&([a,h]=[h,a]),u.setEnd(h.node,h.offset),u.setStart(a.node,a.offset),f.removeAllRanges(),f.addRange(u)}r&&this.view.root.activeElement==this.dom&&(this.dom.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(a,h)),this.impreciseAnchor=a.precise?null:new Oe(c.anchorNode,c.anchorOffset),this.impreciseHead=h.precise?null:new Oe(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&_i(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,i=Ii(e.root),{anchorNode:s,anchorOffset:r}=e.observer.selectionRange;if(!i||!t.empty||!t.assoc||!i.modify)return;let o=te.find(this,t.head);if(!o)return;let l=o.posAtStart;if(t.head==l||t.head==l+o.length)return;let a=this.coordsAt(t.head,-1),h=this.coordsAt(t.head,1);if(!a||!h||a.bottom>h.top)return;let c=this.domAtPos(t.head+t.assoc);i.collapse(c.node,c.offset),i.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let f=e.observer.selectionRange;e.docView.posFromDOM(f.anchorNode,f.anchorOffset)!=t.from&&i.collapse(s,r)}moveToLine(e){let t=this.dom,i;if(e.node!=t)return e;for(let s=e.offset;!i&&s<t.childNodes.length;s++){let r=B.get(t.childNodes[s]);r instanceof te&&(i=r.domAtPos(0))}for(let s=e.offset-1;!i&&s>=0;s--){let r=B.get(t.childNodes[s]);r instanceof te&&(i=r.domAtPos(r.length))}return i?new Oe(i.node,i.offset,!0):e}nearest(e){for(let t=e;t;){let i=B.get(t);if(i&&i.rootView==this)return i;t=t.parentNode}return null}posFromDOM(e,t){let i=this.nearest(e);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(e,t)+i.posAtStart}domAtPos(e){let{i:t,off:i}=this.childCursor().findPos(e,-1);for(;t<this.children.length-1;){let s=this.children[t];if(i<s.length||s instanceof te)break;t++,i=0}return this.children[t].domAtPos(i)}coordsAt(e,t){let i=null,s=0;for(let r=this.length,o=this.children.length-1;o>=0;o--){let l=this.children[o],a=r-l.breakAfter,h=a-l.length;if(a<e)break;if(h<=e&&(h<e||l.covers(-1))&&(a>e||l.covers(1))&&(!i||l instanceof te&&!(i instanceof te&&t>=0)))i=l,s=h;else if(i&&h==e&&a==e&&l instanceof ct&&Math.abs(t)<2){if(l.deco.startSide<0)break;o&&(i=null)}r=h}return i?i.coordsAt(e-s,t):null}coordsForChar(e){let{i:t,off:i}=this.childPos(e,1),s=this.children[t];if(!(s instanceof te))return null;for(;s.children.length;){let{i:l,off:a}=s.childPos(i,1);for(;;l++){if(l==s.children.length)return null;if((s=s.children[l]).length)break}i=a}if(!(s instanceof je))return null;let r=ue(s.text,i);if(r==i)return null;let o=Ut(s.dom,i,r).getClientRects();for(let l=0;l<o.length;l++){let a=o[l];if(l==o.length-1||a.top<a.bottom&&a.left<a.right)return a}return null}measureVisibleLineHeights(e){let t=[],{from:i,to:s}=e,r=this.view.contentDOM.clientWidth,o=r>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==L.LTR;for(let h=0,c=0;c<this.children.length;c++){let f=this.children[c],u=h+f.length;if(u>s)break;if(h>=i){let d=f.dom.getBoundingClientRect();if(t.push(d.height),o){let O=f.dom.lastChild,m=O?Gi(O):[];if(m.length){let g=m[m.length-1],b=a?g.right-d.left:d.right-g.left;b>l&&(l=b,this.minWidth=r,this.minWidthFrom=h,this.minWidthTo=u)}}}h=u+f.breakAfter}return t}textDirectionAt(e){let{i:t}=this.childPos(e,1);return getComputedStyle(this.children[t].dom).direction=="rtl"?L.RTL:L.LTR}measureTextSize(){for(let r of this.children)if(r instanceof te){let o=r.measureTextSize();if(o)return o}let e=document.createElement("div"),t,i,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let r=Gi(e.firstChild)[0];t=e.getBoundingClientRect().height,i=r?r.width/27:7,s=r?r.height:t,e.remove()}),{lineHeight:t,charWidth:i,textHeight:s}}childCursor(e=this.length){let t=this.children.length;return t&&(e-=this.children[--t].length),new Sc(this.children,e,t)}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let i=0,s=0;;s++){let r=s==t.viewports.length?null:t.viewports[s],o=r?r.from-1:this.length;if(o>i){let l=(t.lineBlockAt(o).bottom-t.lineBlockAt(i).top)/this.view.scaleY;e.push(R.replace({widget:new jl(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return R.set(e)}updateDeco(){let e=1,t=this.view.state.facet(Li).map(r=>(this.dynamicDecorationMap[e++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(Bc).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[e++]=i,t.push(V.join(s))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];e<this.decorations.length;)this.dynamicDecorationMap[e++]=!1;return this.decorations}scrollIntoView(e){if(e.isSnapshot){let h=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=h.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let h of this.view.state.facet(zc))try{if(h(this.view,e.range,e))return!0}catch(c){ke(this.view.state,c,"scroll handler")}let{range:t}=e,i=this.coordsAt(t.head,t.empty?t.assoc:t.head>t.anchor?-1:1),s;if(!i)return;!t.empty&&(s=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(i={left:Math.min(i.left,s.left),top:Math.min(i.top,s.top),right:Math.max(i.right,s.right),bottom:Math.max(i.bottom,s.bottom)});let r=Gc(this.view),o={left:i.left-r.left,top:i.top-r.top,right:i.right+r.right,bottom:i.bottom+r.bottom},{offsetWidth:l,offsetHeight:a}=this.view.scrollDOM;CO(this.view.scrollDOM,o,t.head<t.anchor?-1:1,e.x,e.y,Math.max(Math.min(e.xMargin,l),-l),Math.max(Math.min(e.yMargin,a),-a),this.view.textDirection==L.LTR)}}function FO(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}class jl extends mt{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}function Lc(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let i=bc(t.focusNode,t.focusOffset),s=yc(t.focusNode,t.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=B.get(s.node);if(!l||l instanceof je&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=B.get(i.node);!a||a instanceof je&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=e-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function HO(n,e,t){let i=Lc(n,t);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=e.invertedDesc,h=new _e(a.mapPos(r),a.mapPos(o),r,o),c=[];for(let f=s.parentNode;;f=f.parentNode){let u=B.get(f);if(u instanceof dt)c.push({node:f,deco:u.mark});else{if(u instanceof te||f.nodeName=="DIV"&&f.parentNode==n.contentDOM)return{range:h,text:s,marks:c,line:f};if(f!=n.contentDOM)c.push({node:f,deco:new cn({inclusive:!0,attributes:EO(f),tagName:f.tagName.toLowerCase()})});else return null}}}function KO(n,e){return n.nodeType!=1?0:(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e<n.childNodes.length&&n.childNodes[e].contentEditable=="false"?2:0)}let JO=class{constructor(){this.changes=[]}compareRange(e,t){eo(e,t,this.changes)}comparePoint(e,t){eo(e,t,this.changes)}};function ep(n,e,t){let i=new JO;return V.compare(n,e,t,i),i.changes}function tp(n,e){for(let t=n;t&&t!=e;t=t.assignedSlot||t.parentNode)if(t.nodeType==1&&t.contentEditable=="false")return!0;return!1}function ip(n,e){let t=!1;return e&&n.iterChangedRanges((i,s)=>{i<e.to&&s>e.from&&(t=!0)}),t}function np(n,e,t=1){let i=n.charCategorizer(e),s=n.doc.lineAt(e),r=e-s.from;if(s.length==0)return y.cursor(e);r==0?t=1:r==s.length&&(t=-1);let o=r,l=r;t<0?o=ue(s.text,r,!1):l=ue(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=ue(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;l<s.length;){let h=ue(s.text,l);if(i(s.text.slice(l,h))!=a)break;l=h}return y.range(o+s.from,l+s.from)}function sp(n,e){return e.left>n?e.left-n:Math.max(0,n-e.right)}function rp(n,e){return e.top>n?e.top-n:Math.max(0,n-e.bottom)}function tr(n,e){return n.top<e.bottom-1&&n.bottom>e.top+1}function Bl(n,e){return e<n.top?{top:e,left:n.left,right:n.right,bottom:n.bottom}:n}function Nl(n,e){return e>n.bottom?{top:n.top,left:n.left,right:n.right,bottom:e}:n}function ro(n,e,t){let i,s,r,o,l=!1,a,h,c,f;for(let O=n.firstChild;O;O=O.nextSibling){let m=Gi(O);for(let g=0;g<m.length;g++){let b=m[g];s&&tr(s,b)&&(b=Bl(Nl(b,s.bottom),s.top));let S=sp(e,b),w=rp(t,b);if(S==0&&w==0)return O.nodeType==3?Il(O,e,t):ro(O,e,t);if(!i||o>w||o==w&&r>S){i=O,s=b,r=S,o=w;let Q=w?t<b.top?-1:1:S?e<b.left?-1:1:0;l=!Q||(Q>0?g<m.length-1:g>0)}S==0?t>b.bottom&&(!c||c.bottom<b.bottom)?(a=O,c=b):t<b.top&&(!f||f.top>b.top)&&(h=O,f=b):c&&tr(c,b)?c=Nl(c,b.bottom):f&&tr(f,b)&&(f=Bl(f,b.top))}}if(c&&c.bottom>=t?(i=a,s=c):f&&f.top<=t&&(i=h,s=f),!i)return{node:n,offset:0};let u=Math.max(s.left,Math.min(s.right,e));if(i.nodeType==3)return Il(i,u,t);if(l&&i.contentEditable!="false")return ro(i,u,t);let d=Array.prototype.indexOf.call(n.childNodes,i)+(e>=(s.left+s.right)/2?1:0);return{node:n,offset:d}}function Il(n,e,t){let i=n.nodeValue.length,s=-1,r=1e9,o=0;for(let l=0;l<i;l++){let a=Ut(n,l,l+1).getClientRects();for(let h=0;h<a.length;h++){let c=a[h];if(c.top==c.bottom)continue;o||(o=e-c.left);let f=(c.top>t?c.top-t:t-c.bottom)-1;if(c.left-1<=e&&c.right+1>=e&&f<r){let u=e>=(c.left+c.right)/2,d=u;if((Z.chrome||Z.gecko)&&Ut(n,l).getBoundingClientRect().left==c.right&&(d=!u),f<=0)return{node:n,offset:l+(d?1:0)};s=l+(d?1:0),r=f}}}return{node:n,offset:s>-1?s:o>0?n.nodeValue.length:0}}function Fc(n,e,t,i=-1){var s,r;let o=n.contentDOM.getBoundingClientRect(),l=o.top+n.viewState.paddingTop,a,{docHeight:h}=n.viewState,{x:c,y:f}=e,u=f-l;if(u<0)return 0;if(u>h)return n.state.doc.length;for(let Q=n.viewState.heightOracle.textHeight/2,x=!1;a=n.elementAtHeight(u),a.type!=be.Text;)for(;u=i>0?a.bottom+Q:a.top-Q,!(u>=0&&u<=h);){if(x)return t?null:0;x=!0,i=-i}f=l+u;let d=a.from;if(d<n.viewport.from)return n.viewport.from==0?0:t?null:Gl(n,o,a,c,f);if(d>n.viewport.to)return n.viewport.to==n.state.doc.length?n.state.doc.length:t?null:Gl(n,o,a,c,f);let O=n.dom.ownerDocument,m=n.root.elementFromPoint?n.root:O,g=m.elementFromPoint(c,f);g&&!n.contentDOM.contains(g)&&(g=null),g||(c=Math.max(o.left+1,Math.min(o.right-1,c)),g=m.elementFromPoint(c,f),g&&!n.contentDOM.contains(g)&&(g=null));let b,S=-1;if(g&&((s=n.docView.nearest(g))===null||s===void 0?void 0:s.isEditable)!=!1){if(O.caretPositionFromPoint){let Q=O.caretPositionFromPoint(c,f);Q&&({offsetNode:b,offset:S}=Q)}else if(O.caretRangeFromPoint){let Q=O.caretRangeFromPoint(c,f);Q&&({startContainer:b,startOffset:S}=Q,(!n.contentDOM.contains(b)||Z.safari&&op(b,S,c)||Z.chrome&&lp(b,S,c))&&(b=void 0))}}if(!b||!n.docView.dom.contains(b)){let Q=te.find(n.docView,d);if(!Q)return u>a.top+a.height/2?a.to:a.from;({node:b,offset:S}=ro(Q.dom,c,f))}let w=n.docView.nearest(b);if(!w)return null;if(w.isWidget&&((r=w.dom)===null||r===void 0?void 0:r.nodeType)==1){let Q=w.dom.getBoundingClientRect();return e.y<Q.top||e.y<=Q.bottom&&e.x<=(Q.left+Q.right)/2?w.posAtStart:w.posAtEnd}else return w.localPosFromDOM(b,S)+w.posAtStart}function Gl(n,e,t,i,s){let r=Math.round((i-e.left)*n.defaultCharacterWidth);if(n.lineWrapping&&t.height>n.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-t.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+Br(o,r,n.state.tabSize)}function op(n,e,t){let i;if(n.nodeType!=3||e!=(i=n.nodeValue.length))return!1;for(let s=n.nextSibling;s;s=s.nextSibling)if(s.nodeType!=1||s.nodeName!="BR")return!1;return Ut(n,i-1,i).getBoundingClientRect().left>t}function lp(n,e,t){if(e!=0)return!1;for(let s=n;;){let r=s.parentNode;if(!r||r.nodeType!=1||r.firstChild!=s)return!1;if(r.classList.contains("cm-line"))break;s=r}let i=n.nodeType==1?n.getBoundingClientRect():Ut(n,0,Math.max(n.nodeValue.length,1)).getBoundingClientRect();return t-i.left>5}function oo(n,e){let t=n.lineBlockAt(e);if(Array.isArray(t.type)){for(let i of t.type)if(i.to>e||i.to==e&&(i.to==t.to||i.type==be.Text))return i}return t}function ap(n,e,t,i){let s=oo(n,e.head),r=!i||s.type!=be.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:t==(l==L.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return y.cursor(a,t?-1:1)}return y.cursor(t?s.to:s.from,t?-1:1)}function Ll(n,e,t,i){let s=n.state.doc.lineAt(e.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=e,a=null;;){let h=IO(s,r,o,l,t),c=Xc;if(!h){if(s.number==(t?n.state.doc.lines:1))return l;c=`
+`,s=n.state.doc.line(s.number+(t?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!t)}if(a){if(!a(c))return l}else{if(!i)return h;a=i(c)}l=h}}function hp(n,e,t){let i=n.state.charCategorizer(e),s=i(t);return r=>{let o=i(r);return s==F.Space&&(s=o),s==o}}function cp(n,e,t,i){let s=e.head,r=t?1:-1;if(s==(t?n.state.doc.length:0))return y.cursor(s,e.assoc);let o=e.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,e.assoc||-1),c=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let d=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-d.from))),l=(r<0?d.top:d.bottom)+c}let f=a.left+o,u=i??n.viewState.heightOracle.textHeight>>1;for(let d=0;;d+=10){let O=l+(u+d)*r,m=Fc(n,{x:f,y:O},!1,r);if(O<a.top||O>a.bottom||(r<0?m<s:m>s)){let g=n.docView.coordsForChar(m),b=!g||O<g.top?-1:1;return y.cursor(m,b,void 0,o)}}}function In(n,e,t){for(;;){let i=0;for(let s of n)s.between(e-1,e+1,(r,o,l)=>{if(e>r&&e<o){let a=i||t||(e-r<o-e?-1:1);e=a<0?r:o,i=a}});if(!i)return e}}function ir(n,e,t){let i=In(n.state.facet(jo).map(s=>s(n)),t.from,e.head>t.from?-1:1);return i==t.from?t:y.cursor(i,i<t.from?1:-1)}class fp{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,Z.safari&&e.contentDOM.addEventListener("input",()=>null),Z.gecko&&vp(e.contentDOM.ownerDocument)}handleEvent(e){!yp(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||this.runHandlers(e.type,e)}runHandlers(e,t){let i=this.handlers[e];if(i){for(let s of i.observers)s(this.view,t);for(let s of i.handlers){if(t.defaultPrevented)break;if(s(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=up(e),i=this.handlers,s=this.view.contentDOM;for(let r in t)if(r!="scroll"){let o=!t[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!t[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&Kc.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),Z.android&&Z.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return Z.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((t=Hc.find(i=>i.keyCode==e.keyCode))&&!e.ctrlKey||dp.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key=="Enter"&&e&&e.from<e.to&&/^\S+$/.test(e.insert.toString())?!1:(this.pendingIOSKey=void 0,si(this.view.contentDOM,t.key,t.keyCode,t instanceof KeyboardEvent?t:void 0))}ignoreDuringComposition(e){return/^key/.test(e.type)?this.composing>0?!0:Z.safari&&!Z.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1:!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function Fl(n,e){return(t,i)=>{try{return e.call(n,i,t)}catch(s){ke(t.state,s)}}}function up(n){let e=Object.create(null);function t(i){return e[i]||(e[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec;if(s&&s.domEventHandlers)for(let r in s.domEventHandlers){let o=s.domEventHandlers[r];o&&t(r).handlers.push(Fl(i.value,o))}if(s&&s.domEventObservers)for(let r in s.domEventObservers){let o=s.domEventObservers[r];o&&t(r).observers.push(Fl(i.value,o))}}for(let i in Be)t(i).handlers.push(Be[i]);for(let i in De)t(i).observers.push(De[i]);return e}const Hc=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],dp="dthko",Kc=[16,17,18,20,91,92,224,225],$n=6;function Pn(n){return Math.max(0,n)*.7+8}function Op(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}class pp{constructor(e,t,i,s){this.view=e,this.startEvent=t,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParent=RO(e.contentDOM),this.atoms=e.state.facet(jo).map(o=>o(e));let r=e.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(D.allowMultipleSelections)&&mp(e,t),this.dragging=bp(e,t)&&nf(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){var t;if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Op(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let i=0,s=0,r=((t=this.scrollParent)===null||t===void 0?void 0:t.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},o=Gc(this.view);e.clientX-o.left<=r.left+$n?i=-Pn(r.left-e.clientX):e.clientX+o.right>=r.right-$n&&(i=Pn(e.clientX-r.right)),e.clientY-o.top<=r.top+$n?s=-Pn(r.top-e.clientY):e.clientY+o.bottom>=r.bottom-$n&&(s=Pn(e.clientY-r.bottom)),this.setScrollSpeed(i,s)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){this.scrollParent?(this.scrollParent.scrollLeft+=this.scrollSpeed.x,this.scrollParent.scrollTop+=this.scrollSpeed.y):this.view.win.scrollBy(this.scrollSpeed.x,this.scrollSpeed.y),this.dragging===!1&&this.select(this.lastEvent)}skipAtoms(e){let t=null;for(let i=0;i<e.ranges.length;i++){let s=e.ranges[i],r=null;if(s.empty){let o=In(this.atoms,s.from,0);o!=s.from&&(r=y.cursor(o,-1))}else{let o=In(this.atoms,s.from,-1),l=In(this.atoms,s.to,1);(o!=s.from||l!=s.to)&&(r=y.range(s.from==s.anchor?o:l,s.from==s.head?o:l))}r&&(t||(t=e.ranges.slice()),t[i]=r)}return t?y.create(t,e.mainIndex):e}select(e){let{view:t}=this,i=this.skipAtoms(this.style.get(e,this.extend,this.multiple));(this.mustSelect||!i.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function mp(n,e){let t=n.state.facet(Mc);return t.length?t[0](e):Z.mac?e.metaKey:e.ctrlKey}function gp(n,e){let t=n.state.facet(Wc);return t.length?t[0](e):Z.mac?!e.altKey:!e.ctrlKey}function bp(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let i=Ii(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r<s.length;r++){let o=s[r];if(o.left<=e.clientX&&o.right>=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function yp(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,i;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(i=B.get(t))&&i.ignoreEvent(e))return!1;return!0}const Be=Object.create(null),De=Object.create(null),Jc=Z.ie&&Z.ie_version<15||Z.ios&&Z.webkit_version<604;function Sp(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),ef(n,t.value)},50)}function ef(n,e){let{state:t}=n,i,s=1,r=t.toText(e),o=r.lines==t.selection.ranges.length;if(lo!=null&&t.selection.ranges.every(a=>a.empty)&&lo==r.toString()){let a=-1;i=t.changeByRange(h=>{let c=t.doc.lineAt(h.from);if(c.from==a)return{range:h};a=c.from;let f=t.toText((o?r.line(s++).text:e)+t.lineBreak);return{changes:{from:c.from,insert:f},range:y.cursor(h.from+f.length)}})}else o?i=t.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:y.cursor(a.from+h.length)}}):i=t.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}De.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};Be.keydown=(n,e)=>(n.inputState.setSelectionOrigin("select"),e.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);De.touchstart=(n,e)=>{n.inputState.lastTouchTime=Date.now(),n.inputState.setSelectionOrigin("select.pointer")};De.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Be.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let i of n.state.facet(Yc))if(t=i(n,e),t)break;if(!t&&e.button==0&&(t=wp(n,e)),t){let i=!n.hasFocus;n.inputState.startMouseSelection(new pp(n,e,t,i)),i&&n.observer.ignore(()=>{pc(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}return!1};function Hl(n,e,t,i){if(i==1)return y.cursor(e,t);if(i==2)return np(n.state,e,t);{let s=te.find(n.docView,e),r=n.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return l<n.state.doc.length&&l==r.to&&l++,y.range(o,l)}}let tf=(n,e)=>n>=e.top&&n<=e.bottom,Kl=(n,e,t)=>tf(e,t)&&n>=t.left&&n<=t.right;function xp(n,e,t,i){let s=te.find(n.docView,e);if(!s)return 1;let r=e-s.posAtStart;if(r==0)return 1;if(r==s.length)return-1;let o=s.coordsAt(r,-1);if(o&&Kl(t,i,o))return-1;let l=s.coordsAt(r,1);return l&&Kl(t,i,l)?1:o&&tf(i,o)?-1:1}function Jl(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:t,bias:xp(n,t,e.clientX,e.clientY)}}const Qp=Z.ie&&Z.ie_version<=11;let ea=null,ta=0,ia=0;function nf(n){if(!Qp)return n.detail;let e=ea,t=ia;return ea=n,ia=Date.now(),ta=!e||t>Date.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(ta+1)%3:1}function wp(n,e){let t=Jl(n,e),i=nf(e),s=n.state.selection;return{update(r){r.docChanged&&(t.pos=r.changes.mapPos(t.pos),s=s.map(r.changes))},get(r,o,l){let a=Jl(n,r),h,c=Hl(n,a.pos,a.bias,i);if(t.pos!=a.pos&&!o){let f=Hl(n,t.pos,t.bias,i),u=Math.min(f.from,c.from),d=Math.max(f.to,c.to);c=u<c.from?y.range(u,d):y.range(d,u)}return o?s.replaceRange(s.main.extend(c.from,c.to)):l&&i==1&&s.ranges.length>1&&(h=$p(s,a.pos))?h:l?s.addRange(c):y.create([c])}}}function $p(n,e){for(let t=0;t<n.ranges.length;t++){let{from:i,to:s}=n.ranges[t];if(i<=e&&s>=e)return y.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}return null}Be.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let s=n.docView.nearest(e.target);if(s&&s.isWidget){let r=s.posAtStart,o=r+s.length;(r>=t.to||o<=t.from)&&(t=y.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",n.state.sliceDoc(t.from,t.to)),e.dataTransfer.effectAllowed="copyMove"),!1};Be.dragend=n=>(n.inputState.draggedContent=null,!1);function na(n,e,t,i){if(!t)return;let s=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&gp(n,e)?{from:r.from,to:r.to}:null,l={from:s,insert:t},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Be.drop=(n,e)=>{if(!e.dataTransfer)return!1;if(n.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let i=Array(t.length),s=0,r=()=>{++s==t.length&&na(n,e,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o<t.length;o++){let l=new FileReader;l.onerror=r,l.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(t[o])}return!0}else{let i=e.dataTransfer.getData("Text");if(i)return na(n,e,i,!0),!0}return!1};Be.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=Jc?null:e.clipboardData;return t?(ef(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(Sp(n),!1)};function Pp(n,e){let t=n.dom.parentNode;if(!t)return;let i=t.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=e,i.focus(),i.selectionEnd=e.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function kp(n){let e=[],t=[],i=!1;for(let s of n.selection.ranges)s.empty||(e.push(n.sliceDoc(s.from,s.to)),t.push(s));if(!e.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:e.join(n.lineBreak),ranges:t,linewise:i}}let lo=null;Be.copy=Be.cut=(n,e)=>{let{text:t,ranges:i,linewise:s}=kp(n.state);if(!t&&!s)return!1;lo=s?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=Jc?null:e.clipboardData;return r?(r.clearData(),r.setData("text/plain",t),!0):(Pp(n,t),!1)};const sf=pt.define();function rf(n,e){let t=[];for(let i of n.facet(Vc)){let s=i(n,e);s&&t.push(s)}return t?n.update({effects:t,annotations:sf.of(!0)}):null}function of(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=rf(n.state,e);t?n.dispatch(t):n.update([])}},10)}De.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),of(n)};De.blur=n=>{n.observer.clearSelectionRange(),of(n)};De.compositionstart=De.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};De.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,Z.chrome&&Z.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};De.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Be.beforeinput=(n,e)=>{var t;let i;if(Z.chrome&&Z.android&&(i=Hc.find(s=>s.inputType==e.inputType))&&(n.observer.delayAndroidKey(i.key,i.keyCode),i.key=="Backspace"||i.key=="Delete")){let s=((t=window.visualViewport)===null||t===void 0?void 0:t.height)||0;setTimeout(()=>{var r;(((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0)>s+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return Z.ios&&e.inputType=="deleteContentForward"&&n.observer.flushSoon(),Z.safari&&e.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>De.compositionend(n,e),20),!1};const sa=new Set;function vp(n){sa.has(n)||(sa.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}const ra=["pre-wrap","normal","pre-line","break-spaces"];class Zp{constructor(e){this.lineWrapping=e,this.doc=_.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(e,t){let i=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((t-e-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return ra.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let i=0;i<e.length;i++){let s=e[i];s<0?i++:this.heightSamples[Math.floor(s*10)]||(t=!0,this.heightSamples[Math.floor(s*10)]=!0)}return t}refresh(e,t,i,s,r,o){let l=ra.indexOf(e)>-1,a=Math.round(t)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h<o.length;h++){let c=o[h];c<0?h++:this.heightSamples[Math.floor(c*10)]=!0}}return a}}class Tp{constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index<this.heights.length}}class tt{constructor(e,t,i,s,r){this.from=e,this.length=t,this.top=i,this.height=s,this._content=r}get type(){return typeof this._content=="number"?be.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof Ct?this._content.widget:null}get widgetLineBreaks(){return typeof this._content=="number"?this._content:0}join(e){let t=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new tt(this.from,this.length+e.length,this.top,this.height+e.height,t)}}var G=function(n){return n[n.ByPos=0]="ByPos",n[n.ByHeight=1]="ByHeight",n[n.ByPosNoHeight=2]="ByPosNoHeight",n}(G||(G={}));const Gn=.001;class ye{constructor(e,t,i=2){this.length=e,this.height=t,this.flags=i}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e,t){this.height!=t&&(Math.abs(this.height-t)>Gn&&(e.heightChanged=!0),this.height=t)}replace(e,t,i){return ye.of(i)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:c,toB:f}=s[l],u=r.lineAt(a,G.ByPosNoHeight,i.setDoc(t),0,0),d=u.to>=h?u:r.lineAt(h,G.ByPosNoHeight,i,0,0);for(f+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,c=s[l-1].fromB,l--,a<u.from&&(u=r.lineAt(a,G.ByPosNoHeight,i,0,0));c+=u.from-a,a=u.from;let O=Bo.build(i.setDoc(o),e,c,f);r=r.replace(a,h,O)}return r.updateHeight(i,0)}static empty(){return new Ae(0,0)}static of(e){if(e.length==1)return e[0];let t=0,i=e.length,s=0,r=0;for(;;)if(t==i)if(s>r*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=e[i];l.break?e.splice(i,1,l.left,null,l.right):e.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s<r){let l=e[t++];l&&(s+=l.size)}else{let l=e[--i];l&&(r+=l.size)}let o=0;return e[t-1]==null?(o=1,t--):e[t]==null&&(o=1,i++),new Cp(ye.of(e.slice(0,t)),o,ye.of(e.slice(i)))}}ye.prototype.size=1;class lf extends ye{constructor(e,t,i){super(e,t),this.deco=i}blockAt(e,t,i,s){return new tt(s,this.length,i,this.height,this.deco||0)}lineAt(e,t,i,s,r){return this.blockAt(0,i,s,r)}forEachLine(e,t,i,s,r,o){e<=r+this.length&&t>=r&&o(this.blockAt(0,i,s,r))}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more&&this.setHeight(e,s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Ae extends lf{constructor(e,t){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,t,i,s){return new tt(s,this.length,i,this.height,this.breaks)}replace(e,t,i){let s=i[0];return i.length==1&&(s instanceof Ae||s instanceof le&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof le?s=new Ae(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):ye.of(i)}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more?this.setHeight(e,s.heights[s.index++]):(i||this.outdated)&&this.setHeight(e,Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class le extends ye{constructor(e){super(e,0)}heightMetrics(e,t){let i=e.doc.lineAt(t).number,s=e.doc.lineAt(t+this.length).number,r=s-i+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(e,t,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(t,s);if(t.lineWrapping){let h=s+(e<t.lineHeight?0:Math.round(Math.max(0,Math.min(1,(e-i)/this.height))*this.length)),c=t.doc.lineAt(h),f=l+c.length*a,u=Math.max(i,e-f/2);return new tt(c.from,c.length,u,f,0)}else{let h=Math.max(0,Math.min(o-r,Math.floor((e-i)/l))),{from:c,length:f}=t.doc.line(r+h);return new tt(c,f,i+l*h,l,0)}}lineAt(e,t,i,s,r){if(t==G.ByHeight)return this.blockAt(e,i,s,r);if(t==G.ByPosNoHeight){let{from:d,to:O}=i.doc.lineAt(e);return new tt(d,O-d,0,0,0)}let{firstLine:o,perLine:l,perChar:a}=this.heightMetrics(i,r),h=i.doc.lineAt(e),c=l+h.length*a,f=h.number-o,u=s+l*f+a*(h.from-r-f);return new tt(h.from,h.length,Math.max(s,Math.min(u,s+this.height-c)),c,0)}forEachLine(e,t,i,s,r,o){e=Math.max(e,r),t=Math.min(t,r+this.length);let{firstLine:l,perLine:a,perChar:h}=this.heightMetrics(i,r);for(let c=e,f=s;c<=t;){let u=i.doc.lineAt(c);if(c==e){let O=u.number-l;f+=a*O+h*(e-r-O)}let d=a+h*u.length;o(new tt(u.from,u.length,f,d,0)),f+=d,c=u.to+1}}replace(e,t,i){let s=this.length-t;if(s>0){let r=i[i.length-1];r instanceof le?i[i.length-1]=new le(r.length+s):i.push(null,new le(s-1))}if(e>0){let r=i[0];r instanceof le?i[0]=new le(e+r.length):i.unshift(new le(e-1),null)}return ye.of(i)}decomposeLeft(e,t){t.push(new le(e-1),null)}decomposeRight(e,t){t.push(null,new le(this.length-e-1))}updateHeight(e,t=0,i=!1,s){let r=t+this.length;if(s&&s.from<=t+this.length&&s.more){let o=[],l=Math.max(t,s.from),a=-1;for(s.from>t&&o.push(new le(s.from-t-1).updateHeight(e,t));l<=r&&s.more;){let c=e.doc.lineAt(l).length;o.length&&o.push(null);let f=s.heights[s.index++];a==-1?a=f:Math.abs(f-a)>=Gn&&(a=-2);let u=new Ae(c,f);u.outdated=!1,o.push(u),l+=c+1}l<=r&&o.push(null,new le(r-l).updateHeight(e,l));let h=ye.of(o);return(a<0||Math.abs(h.height-this.height)>=Gn||Math.abs(a-this.heightMetrics(e,t).perLine)>=Gn)&&(e.heightChanged=!0),h}else(i||this.outdated)&&(this.setHeight(e,e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class Cp extends ye{constructor(e,t,i){super(e.length+t+i.length,e.height+i.height,t|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get break(){return this.flags&1}blockAt(e,t,i,s){let r=i+this.left.height;return e<r?this.left.blockAt(e,t,i,s):this.right.blockAt(e,t,r,s+this.left.length+this.break)}lineAt(e,t,i,s,r){let o=s+this.left.height,l=r+this.left.length+this.break,a=t==G.ByHeight?e<o:e<l,h=a?this.left.lineAt(e,t,i,s,r):this.right.lineAt(e,t,i,o,l);if(this.break||(a?h.to<l:h.from>l))return h;let c=t==G.ByPosNoHeight?G.ByPosNoHeight:G.ByPos;return a?h.join(this.right.lineAt(l,c,i,o,l)):this.left.lineAt(l,c,i,s,r).join(h)}forEachLine(e,t,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)e<a&&this.left.forEachLine(e,t,i,s,r,o),t>=a&&this.right.forEachLine(e,t,i,l,a,o);else{let h=this.lineAt(a,G.ByPos,i,s,r);e<h.from&&this.left.forEachLine(e,h.from-1,i,s,r,o),h.to>=e&&h.from<=t&&o(h),t>h.to&&this.right.forEachLine(h.to+1,t,i,l,a,o)}}replace(e,t,i){let s=this.left.length+this.break;if(t<s)return this.balanced(this.left.replace(e,t,i),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-s,t-s,i));let r=[];e>0&&this.decomposeLeft(e,r);let o=r.length;for(let l of i)r.push(l);if(e>0&&oa(r,o-1),t<this.length){let l=r.length;this.decomposeRight(t,r),oa(r,l)}return ye.of(r)}decomposeLeft(e,t){let i=this.left.length;if(e<=i)return this.left.decomposeLeft(e,t);t.push(this.left),this.break&&(i++,e>=i&&t.push(null)),e>i&&this.right.decomposeLeft(e-i,t)}decomposeRight(e,t){let i=this.left.length,s=i+this.break;if(e>=s)return this.right.decomposeRight(e-s,t);e<i&&this.left.decomposeRight(e,t),this.break&&e<s&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?ye.of(this.break?[e,null,t]:[e,t]):(this.left=e,this.right=t,this.height=e.height+t.height,this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,i=!1,s){let{left:r,right:o}=this,l=t+r.length+this.break,a=null;return s&&s.from<=t+r.length&&s.more?a=r=r.updateHeight(e,t,i,s):r.updateHeight(e,t,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(e,l,i,s):o.updateHeight(e,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function oa(n,e){let t,i;n[e]==null&&(t=n[e-1])instanceof le&&(i=n[e+1])instanceof le&&n.splice(e-1,3,new le(t.length+1+i.length))}const Rp=5;class Bo{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let i=Math.min(t,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof Ae?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new Ae(i-this.pos,-1)),this.writtenTo=i,t>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,i){if(e<t||i.heightRelevant){let s=i.widget?i.widget.estimatedHeight:0,r=i.widget?i.widget.lineBreaks:0;s<0&&(s=this.oracle.lineHeight);let o=t-e;i.block?this.addBlock(new lf(o,s,i)):(o||r||s>=Rp)&&this.addLineDeco(s,r,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenTo<e&&((this.writtenTo<e-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new Ae(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,t){let i=new le(t-e);return this.oracle.doc.lineAt(e).to==t&&(i.flags|=4),i}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof Ae)return e;let t=new Ae(0,-1);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=t,this.writtenTo=this.pos=this.pos+i}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof Ae)&&!this.isCovered?this.nodes.push(new Ae(0,-1)):(this.writtenTo<this.pos||t==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let i=e;for(let s of this.nodes)s instanceof Ae&&s.updateHeight(this.oracle,i),i+=s?s.length:1;return this.nodes}static build(e,t,i,s){let r=new Bo(i,e);return V.spans(t,i,s,r,0),r.finish(i)}}function Ap(n,e,t){let i=new Xp;return V.compare(n,e,t,i,0),i.changes}class Xp{constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,i,s){(e<t||i&&i.heightRelevant||s&&s.heightRelevant)&&eo(e,t,this.changes,5)}}function Mp(n,e){let t=n.getBoundingClientRect(),i=n.ownerDocument,s=i.defaultView||window,r=Math.max(0,t.left),o=Math.min(s.innerWidth,t.right),l=Math.max(0,t.top),a=Math.min(s.innerHeight,t.bottom);for(let h=n.parentNode;h&&h!=i.body;)if(h.nodeType==1){let c=h,f=window.getComputedStyle(c);if((c.scrollHeight>c.clientHeight||c.scrollWidth>c.clientWidth)&&f.overflow!="visible"){let u=c.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=h==n.parentNode?u.bottom:Math.min(a,u.bottom)}h=f.position=="absolute"||f.position=="fixed"?c.offsetParent:c.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-t.left,right:Math.max(r,o)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}function Wp(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}class nr{constructor(e,t,i){this.from=e,this.to=t,this.size=i}static same(e,t){if(e.length!=t.length)return!1;for(let i=0;i<e.length;i++){let s=e[i],r=t[i];if(s.from!=r.from||s.to!=r.to||s.size!=r.size)return!1}return!0}draw(e,t){return R.replace({widget:new Yp(this.size*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}}class Yp extends mt{constructor(e,t){super(),this.size=e,this.vertical=t}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){let e=document.createElement("div");return this.vertical?e.style.height=this.size+"px":(e.style.width=this.size+"px",e.style.height="2px",e.style.display="inline-block"),e}get estimatedHeight(){return this.vertical?this.size:-1}}class la{constructor(e){this.state=e,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scrollTop=0,this.scrolledToBottom=!1,this.scaleX=1,this.scaleY=1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=aa,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=L.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let t=e.facet(Uo).some(i=>typeof i!="function"&&i.class=="cm-lineWrapping");this.heightOracle=new Zp(t),this.stateDeco=e.facet(Li).filter(i=>typeof i!="function"),this.heightMap=ye.empty().applyChanges(this.stateDeco,_.empty,this.heightOracle.setDoc(e.doc),[new _e(0,0,0,e.doc.length)]);for(let i=0;i<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());i++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=R.set(this.lineGaps.map(i=>i.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let i=0;i<=1;i++){let s=i?t.head:t.anchor;if(!e.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);e.push(new kn(r,o))}}return this.viewports=e.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?aa:new No(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(Xi(e,this.scaler))})}update(e,t=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=this.state.facet(Li).filter(c=>typeof c!="function");let s=e.changedRanges,r=_e.extendWithRanges(s,Ap(i,this.stateDeco,e?e.changes:re.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),this.heightMap.height!=o&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let a=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.head<a.from||t.range.head>a.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,e.flags|=this.updateForViewport(),(h||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Dc)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let t=e.contentDOM,i=window.getComputedStyle(t),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?L.RTL:L.LTR;let o=this.heightOracle.mustRefreshForWrapping(r),l=t.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,c=0;if(l.width&&l.height){let{scaleX:Q,scaleY:x}=Oc(t,l);(Q>.005&&Math.abs(this.scaleX-Q)>.005||x>.005&&Math.abs(this.scaleY-x)>.005)&&(this.scaleX=Q,this.scaleY=x,h|=8,o=a=!0)}let f=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=f||this.paddingBottom!=u)&&(this.paddingTop=f,this.paddingBottom=u,h|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=8);let d=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=d&&(this.scrollAnchorHeight=-1,this.scrollTop=d),this.scrolledToBottom=gc(e.scrollDOM);let O=(this.printing?Wp:Mp)(t,this.paddingTop),m=O.top-this.pixelViewport.top,g=O.bottom-this.pixelViewport.bottom;this.pixelViewport=O;let b=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(b!=this.inView&&(this.inView=b,b&&(a=!0)),!this.inView&&!this.scrollTarget)return 0;let S=l.width;if((this.contentDOMWidth!=S||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,h|=8),a){let Q=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(Q)&&(o=!0),o||s.lineWrapping&&Math.abs(S-this.contentDOMWidth)>s.charWidth){let{lineHeight:x,charWidth:k,textHeight:P}=e.docView.measureTextSize();o=x>0&&s.refresh(r,x,k,P,S/k,Q),o&&(e.docView.minWidth=0,h|=8)}m>0&&g>0?c=Math.max(m,g):m<0&&g<0&&(c=Math.min(m,g)),s.heightChanged=!1;for(let x of this.viewports){let k=x.from==this.viewport.from?Q:e.docView.measureVisibleLineHeights(x);this.heightMap=(o?ye.empty().applyChanges(this.stateDeco,_.empty,this.heightOracle,[new _e(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Tp(x.from,k))}s.heightChanged&&(h|=2)}let w=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return w&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(c,this.scrollTarget),h|=this.updateForViewport()),(h&2||w)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let i=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new kn(s.lineAt(o-i*1e3,G.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,G.ByHeight,r,0,0).to);if(t){let{head:h}=t.range;if(h<a.from||h>a.to){let c=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),f=s.lineAt(h,G.ByPos,r,0,0),u;t.y=="center"?u=(f.top+f.bottom)/2-c/2:t.y=="start"||t.y=="nearest"&&h<a.from?u=f.top:u=f.bottom-c,a=new kn(s.lineAt(u-1e3/2,G.ByHeight,r,0,0).from,s.lineAt(u+c+1e3/2,G.ByHeight,r,0,0).to)}}return a}mapViewport(e,t){let i=t.mapPos(e.from,-1),s=t.mapPos(e.to,1);return new kn(this.heightMap.lineAt(i,G.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(s,G.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},i=0){if(!this.inView)return!0;let{top:s}=this.heightMap.lineAt(e,G.ByPos,this.heightOracle,0,0),{bottom:r}=this.heightMap.lineAt(t,G.ByPos,this.heightOracle,0,0),{visibleTop:o,visibleBottom:l}=this;return(e==0||s<=o-Math.max(10,Math.min(-i,250)))&&(t==this.state.doc.length||r>=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r<l+2*1e3}mapLineGaps(e,t){if(!e.length||t.empty)return e;let i=[];for(let s of e)t.touchesRange(s.from,s.to)||i.push(new nr(t.mapPos(s.from),t.mapPos(s.to),s.size));return i}ensureLineGaps(e,t){let i=this.heightOracle.lineWrapping,s=i?1e4:2e3,r=s>>1,o=s<<1;if(this.defaultTextDirection!=L.LTR&&!i)return[];let l=[],a=(c,f,u,d)=>{if(f-c<r)return;let O=this.state.selection.main,m=[O.from];O.empty||m.push(O.to);for(let b of m)if(b>c&&b<f){a(c,b-10,u,d),a(b+10,f,u,d);return}let g=Ep(e,b=>b.from>=u.from&&b.to<=u.to&&Math.abs(b.from-c)<r&&Math.abs(b.to-f)<r&&!m.some(S=>b.from<S&&b.to>S));if(!g){if(f<u.to&&t&&i&&t.visibleRanges.some(b=>b.from<=f&&b.to>=f)){let b=t.moveToLineBoundary(y.cursor(f),!1,!0).head;b>c&&(f=b)}g=new nr(c,f,this.gapSize(u,c,f,d))}l.push(g)},h=c=>{if(c.length<o||c.type!=be.Text)return;let f=qp(c.from,c.to,this.stateDeco);if(f.total<o)return;let u=this.scrollTarget?this.scrollTarget.range.head:null,d,O;if(i){let m=s/this.heightOracle.lineLength*this.heightOracle.lineHeight,g,b;if(u!=null){let S=Zn(f,u),w=((this.visibleBottom-this.visibleTop)/2+m)/c.height;g=S-w,b=S+w}else g=(this.visibleTop-c.top-m)/c.height,b=(this.visibleBottom-c.top+m)/c.height;d=vn(f,g),O=vn(f,b)}else{let m=f.total*this.heightOracle.charWidth,g=s*this.heightOracle.charWidth,b,S;if(u!=null){let w=Zn(f,u),Q=((this.pixelViewport.right-this.pixelViewport.left)/2+g)/m;b=w-Q,S=w+Q}else b=(this.pixelViewport.left-g)/m,S=(this.pixelViewport.right+g)/m;d=vn(f,b),O=vn(f,S)}d>c.from&&a(c.from,d,c,f),O<c.to&&a(O,c.to,c,f)};for(let c of this.viewportLines)Array.isArray(c.type)?c.type.forEach(h):h(c);return l}gapSize(e,t,i,s){let r=Zn(s,i)-Zn(s,t);return this.heightOracle.lineWrapping?e.height*r:s.total*this.heightOracle.charWidth*r}updateLineGaps(e){nr.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=R.set(e.map(t=>t.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let t=[];V.spans(e,this.viewport.from,this.viewport.to,{span(s,r){t.push({from:s,to:r})},point(){}},20);let i=t.length!=this.visibleRanges.length||this.visibleRanges.some((s,r)=>s.from!=t[r].from||s.to!=t[r].to);return this.visibleRanges=t,i?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||Xi(this.heightMap.lineAt(e,G.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||Xi(this.heightMap.lineAt(this.scaler.fromDOM(e),G.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return Xi(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class kn{constructor(e,t){this.from=e,this.to=t}}function qp(n,e,t){let i=[],s=n,r=0;return V.spans(t,n,e,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s<e&&(i.push({from:s,to:e}),r+=e-s),{total:r,ranges:i}}function vn({total:n,ranges:e},t){if(t<=0)return e[0].from;if(t>=1)return e[e.length-1].to;let i=Math.floor(n*t);for(let s=0;;s++){let{from:r,to:o}=e[s],l=o-r;if(i<=l)return r+i;i-=l}}function Zn(n,e){let t=0;for(let{from:i,to:s}of n.ranges){if(e<=s){t+=e-i;break}t+=s-i}return t/n.total}function Ep(n,e){for(let t of n)if(e(t))return t}const aa={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};class No{constructor(e,t,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=t.lineAt(l,G.ByPos,e,0,0).top,c=t.lineAt(a,G.ByPos,e,0,0).bottom;return s+=c-h,{from:l,to:a,top:h,bottom:c,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(t.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(e){for(let t=0,i=0,s=0;;t++){let r=t<this.viewports.length?this.viewports[t]:null;if(!r||e<r.top)return s+(e-i)*this.scale;if(e<=r.bottom)return r.domTop+(e-r.top);i=r.bottom,s=r.domBottom}}fromDOM(e){for(let t=0,i=0,s=0;;t++){let r=t<this.viewports.length?this.viewports[t]:null;if(!r||e<r.domTop)return i+(e-s)/this.scale;if(e<=r.domBottom)return r.top+(e-r.domTop);i=r.bottom,s=r.domBottom}}eq(e){return e instanceof No?this.scale==e.scale&&this.viewports.length==e.viewports.length&&this.viewports.every((t,i)=>t.from==e.viewports[i].from&&t.to==e.viewports[i].to):!1}}function Xi(n,e){if(e.scale==1)return n;let t=e.toDOM(n.top),i=e.toDOM(n.bottom);return new tt(n.from,n.length,t,i-t,Array.isArray(n._content)?n._content.map(s=>Xi(s,e)):n._content)}const Tn=T.define({combine:n=>n.join(" ")}),ao=T.define({combine:n=>n.indexOf(!0)>-1}),ho=Zt.newName(),af=Zt.newName(),hf=Zt.newName(),cf={"&light":"."+af,"&dark":"."+hf};function co(n,e,t){return new Zt(e,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!t||!t[s])throw new RangeError(`Unsupported selector: ${s}`);return t[s]}):n+" "+i}})}const Vp=co("."+ho,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",insetInlineStart:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-highlightSpace:before":{content:"attr(data-display)",position:"absolute",pointerEvents:"none",color:"#888"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},cf),Mi="￿";class _p{constructor(e,t){this.points=e,this.text="",this.lineSeparator=t.facet(D.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Mi}readRange(e,t){if(!e)return this;let i=e.parentNode;for(let s=e;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=s.nextSibling;if(o==t)break;let l=B.get(s),a=B.get(o);(l&&a?l.breakAfter:(l?l.breakAfter:ls(s))||ls(o)&&(s.nodeName!="BR"||s.cmIgnore)&&this.text.length>r)&&this.lineBreak(),s=o}return this.findPointBefore(i,t),this}readTextNode(e){let t=e.nodeValue;for(let i of this.points)i.node==e&&(i.pos=this.text.length+Math.min(i.offset,t.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=t.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(t))&&(r=l.index,o=l[0].length),this.append(t.slice(i,r<0?t.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(e){if(e.cmIgnore)return;let t=B.get(e),i=t&&t.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let i of this.points)i.node==e&&e.childNodes[i.offset]==t&&(i.pos=this.text.length)}findPointInside(e,t){for(let i of this.points)(e.nodeType==3?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+(Dp(e,i.node,i.offset)?t:0))}}function Dp(n,e,t){for(;;){if(!e||t<ut(e))return!1;if(e==n)return!0;t=zt(e)+1,e=e.parentNode}}class ha{constructor(e,t){this.node=e,this.offset=t,this.pos=-1}}class zp{constructor(e,t,i,s){this.typeOver=s,this.bounds=null,this.text="",this.domChanged=t>-1;let{impreciseHead:r,impreciseAnchor:o}=e.docView;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=e.docView.domBoundsAround(t,i,0))){let l=r||o?[]:Bp(e),a=new _p(l,e.state);a.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=a.text,this.newSel=Np(l,this.bounds.from)}else{let l=e.observer.selectionRange,a=r&&r.node==l.focusNode&&r.offset==l.focusOffset||!Gr(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),h=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!Gr(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),c=e.viewport;if((Z.ios||Z.chrome)&&e.state.selection.main.empty&&a!=h&&(c.from>0||c.to<e.state.doc.length)){let f=Math.min(a,h),u=Math.max(a,h),d=c.from-f,O=c.to-u;(d==0||d==1||f==0)&&(O==0||O==-1||u==e.state.doc.length)&&(a=0,h=e.state.doc.length)}this.newSel=y.single(h,a)}}}function ff(n,e){let t,{newSel:i}=e,s=n.state.selection.main,r=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:l}=e.bounds,a=s.from,h=null;(r===8||Z.android&&e.text.length<l-o)&&(a=s.to,h="end");let c=jp(n.state.doc.sliceString(o,l,Mi),e.text,a-o,h);c&&(Z.chrome&&r==13&&c.toB==c.from+2&&e.text.slice(c.from,c.toB)==Mi+Mi&&c.toB--,t={from:o+c.from,to:o+c.toA,insert:_.of(e.text.slice(c.from,c.toB).split(Mi))})}else i&&(!n.hasFocus&&n.state.facet(St)||i.main.eq(s))&&(i=null);if(!t&&!i)return!1;if(!t&&e.typeOver&&!s.empty&&i&&i.main.empty?t={from:s.from,to:s.to,insert:n.state.doc.slice(s.from,s.to)}:t&&t.from>=s.from&&t.to<=s.to&&(t.from!=s.from||t.to!=s.to)&&s.to-s.from-(t.to-t.from)<=4?t={from:s.from,to:s.to,insert:n.state.doc.slice(s.from,t.from).append(t.insert).append(n.state.doc.slice(t.to,s.to))}:(Z.mac||Z.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&t.insert.length==2&&(i=y.single(i.main.anchor-1,i.main.head-1)),t={from:s.from,to:s.to,insert:_.of([" "])}):Z.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==`
+ `&&n.lineWrapping&&(i&&(i=y.single(i.main.anchor-1,i.main.head-1)),t={from:s.from,to:s.to,insert:_.of([" "])}),t)return uf(n,t,i,r);if(i&&!i.main.eq(s)){let o=!1,l="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(o=!0),l=n.inputState.lastSelectionOrigin),n.dispatch({selection:i,scrollIntoView:o,userEvent:l}),!0}else return!1}function uf(n,e,t,i=-1){if(Z.ios&&n.inputState.flushIOSKey(e))return!0;let s=n.state.selection.main;if(Z.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&n.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&si(n.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||i==8&&e.insert.length<e.to-e.from&&e.to>s.head)&&si(n.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&si(n.contentDOM,"Delete",46)))return!0;let r=e.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Up(n,e,t));return n.state.facet(Ec).some(a=>a(n,e.from,e.to,r,l))||n.dispatch(l()),!0}function Up(n,e,t){let i,s=n.state,r=s.selection.main;if(e.from>=r.from&&e.to<=r.to&&e.to-e.from>=(r.to-r.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let l=r.from<e.from?s.sliceDoc(r.from,e.from):"",a=r.to>e.to?s.sliceDoc(e.to,r.to):"";i=s.replaceSelection(n.state.toText(l+e.insert.sliceString(0,void 0,n.state.lineBreak)+a))}else{let l=s.changes(e),a=t&&t.main.to<=l.newLength?t.main:void 0;if(s.selection.ranges.length>1&&n.inputState.composing>=0&&e.to<=r.to&&e.to>=r.to-10){let h=n.state.sliceDoc(e.from,e.to),c,f=t&&Lc(n,t.main.head);if(f){let O=e.insert.length-(e.to-e.from);c={from:f.from,to:f.to-O}}else c=n.state.doc.lineAt(r.head);let u=r.to-e.to,d=r.to-r.from;i=s.changeByRange(O=>{if(O.from==r.from&&O.to==r.to)return{changes:l,range:a||O.map(l)};let m=O.to-u,g=m-h.length;if(O.to-O.from!=d||n.state.sliceDoc(g,m)!=h||O.to>=c.from&&O.from<=c.to)return{range:O};let b=s.changes({from:g,to:m,insert:e.insert}),S=O.to-r.to;return{changes:b,range:a?y.range(Math.max(0,a.anchor+S),Math.max(0,a.head+S)):O.map(b)}})}else i={changes:l,selection:a&&s.selection.replaceRange(a)}}let o="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,o+=".compose",n.inputState.compositionFirstChange&&(o+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:o,scrollIntoView:!0})}function jp(n,e,t,i){let s=Math.min(n.length,e.length),r=0;for(;r<s&&n.charCodeAt(r)==e.charCodeAt(r);)r++;if(r==s&&n.length==e.length)return null;let o=n.length,l=e.length;for(;o>0&&l>0&&n.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));t-=o+a-r}if(o<r&&n.length<e.length){let a=t<=r&&t>=o?r-t:0;r-=a,l=r+(l-o),o=r}else if(l<r){let a=t<=r&&t>=l?r-t:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Bp(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return t&&(e.push(new ha(t,i)),(s!=t||r!=i)&&e.push(new ha(s,r))),e}function Np(n,e){if(n.length==0)return null;let t=n[0].pos,i=n.length==2?n[1].pos:t;return t>-1&&i>-1?y.single(t+e,i+e):null}const Ip={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},sr=Z.ie&&Z.ie_version<=11;class Gp{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new AO,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let i of t)this.queue.push(i);(Z.ie&&Z.ie_version<=11||Z.ios&&e.composing)&&t.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&e.constructor.EDIT_CONTEXT!==!1&&!(Z.chrome&&Z.chrome_version<126)&&(this.editContext=new Fp(e),e.state.facet(St)&&(e.contentDOM.editContext=this.editContext.editContext)),sr&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(e.scrollDOM)),this.addWindowListeners(this.win=e.win),this.start(),typeof IntersectionObserver=="function"&&(this.intersection=new IntersectionObserver(t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){e.type=="change"&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,i)=>t!=e[i]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(St)?i.root.activeElement!=this.dom:!Nn(i.dom,s))return;let r=s.anchorNode&&i.docView.nearest(s.anchorNode);if(r&&r.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(Z.ie&&Z.ie_version<=11||Z.android&&Z.chrome)&&!i.state.selection.main.empty&&s.focusNode&&_i(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=Ii(e.root);if(!t)return!1;let i=Z.safari&&e.root.nodeType==11&&ZO(this.dom.ownerDocument)==this.dom&&Lp(this.view,t)||t;if(!i||this.selectionRange.eq(i))return!1;let s=Nn(this.dom,i);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&MO(this.dom,i)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(i),s&&(this.selectionChanged=!0),!0)}setSelectionRange(e,t){this.selectionRange.set(e.node,e.offset,t.node,t.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,t=null;for(let i=this.dom;i;)if(i.nodeType==1)!t&&e<this.scrollTargets.length&&this.scrollTargets[e]==i?e++:t||(t=this.scrollTargets.slice(0,e)),t&&t.push(i),i=i.assignedSlot||i.parentNode;else if(i.nodeType==11)i=i.host;else break;if(e<this.scrollTargets.length&&!t&&(t=this.scrollTargets.slice(0,e)),t){for(let i of this.scrollTargets)i.removeEventListener("scroll",this.onScroll);for(let i of this.scrollTargets=t)i.addEventListener("scroll",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,Ip),sr&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),sr&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){var i;if(!this.delayedAndroidKey){let s=()=>{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&si(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange<Date.now()-50||!!(!((i=this.delayedAndroidKey)===null||i===void 0)&&i.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,i=-1,s=!1;for(let r of e){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),t==-1?{from:t,to:i}=o:(t=Math.min(o.from,t),i=Math.max(o.to,i)))}return{from:t,to:i,typeOver:s}}readChange(){let{from:e,to:t,typeOver:i}=this.processRecords(),s=this.selectionChanged&&Nn(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new zp(this.view,e,t,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let i=this.view.state,s=ff(this.view,t);return this.view.state==i&&(t.domChanged||t.newSel&&!t.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let t=this.view.docView.nearest(e.target);if(!t||t.ignoreMutation(e))return null;if(t.markDirty(e.type=="attributes"),e.type=="attributes"&&(t.flags|=4),e.type=="childList"){let i=ca(t,e.previousSibling||e.target.previousSibling,-1),s=ca(t,e.nextSibling||e.target.nextSibling,1);return{from:i?t.posAfter(i):t.posAtStart,to:s?t.posBefore(s):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener("change",this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener("change",this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(St)!=e.state.facet(St)&&(e.view.contentDOM.editContext=e.state.facet(St)?this.editContext.editContext:null))}destroy(){var e,t,i;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}}function ca(n,e,t){for(;e;){let i=B.get(e);if(i&&i.parent==n)return i;let s=e.parentNode;e=s!=n.dom?s:t>0?e.nextSibling:e.previousSibling}return null}function fa(n,e){let t=e.startContainer,i=e.startOffset,s=e.endContainer,r=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor);return _i(o.node,o.offset,s,r)&&([t,i,s,r]=[s,r,t,i]),{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}}function Lp(n,e){if(e.getComposedRanges){let s=e.getComposedRanges(n.root)[0];if(s)return fa(n,s)}let t=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),t=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),t?fa(n,t):null}class Fp{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});t.addEventListener("textupdate",i=>{let{anchor:s}=e.state.selection.main,r={from:this.toEditorPos(i.updateRangeStart),to:this.toEditorPos(i.updateRangeEnd),insert:_.of(i.text.split(`
+`))};r.from==this.from&&s<this.from?r.from=s:r.to==this.to&&s>this.to&&(r.to=s),!(r.from==r.to&&!r.insert.length)&&(this.pendingContextChange=r,uf(e,r,y.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd))),this.pendingContextChange&&this.revertPending(e.state))}),t.addEventListener("characterboundsupdate",i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o<l;o++){let a=e.coordsForChar(o);r=a&&new DOMRect(a.left,a.right,a.right-a.left,a.bottom-a.top)||r||new DOMRect,s.push(r)}t.updateCharacterBounds(i.rangeStart,s)}),t.addEventListener("textformatupdate",i=>{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(o!="None"&&l!="None"){let a=`text-decoration: underline ${o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${l=="Thin"?1:2}px`;s.push(R.mark({attributes:{style:a}}).range(this.toEditorPos(r.rangeStart),this.toEditorPos(r.rangeEnd)))}}e.dispatch({effects:Uc.of(R.set(s))})}),t.addEventListener("compositionstart",()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)}),t.addEventListener("compositionend",()=>{e.inputState.composing=-1,e.inputState.compositionFirstChange=null}),this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=Ii(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,i=!1,s=this.pendingContextChange;return e.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let c=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,t+=c;return}else s=null,this.revertPending(e.state);if(r+=t,o+=t,o<=this.from)this.from+=c,this.to+=c;else if(r<this.to){if(r<this.from||o>this.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=c}t+=c}),s&&!i&&this.revertPending(e.state),!i}update(e){!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.resetRange(e.state),this.editContext.updateText(0,this.editContext.text.length,e.state.doc.sliceString(this.from,this.to)),this.setSelection(e.state)):(e.docChanged||e.selectionSet)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.to+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),s=this.toContextPos(t.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e){return e+this.from}toContextPos(e){return e-this.from}}class v{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:t}=e;this.dispatchTransactions=e.dispatchTransactions||t&&(i=>i.forEach(s=>t(s,this)))||(i=>this.update(i)),this.dispatch=this.dispatch.bind(this),this._root=e.root||XO(e.parent)||document,this.viewState=new la(e.state||D.create(e)),e.scrollTo&&e.scrollTo.is(wn)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ri).map(i=>new er(i));for(let i of this.plugins)i.update(this);this.observer=new Gp(this),this.inputState=new fp(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Ul(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure()}dispatch(...e){let t=e.length==1&&e[0]instanceof ie?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,i=!1,s,r=this.state;for(let u of e){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;e.some(u=>u.annotation(sf))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=rf(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,c=null;if(h?(this.observer.clearDelayedAndroidKey(),c=this.observer.readChange(),(c&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(c=null)):this.observer.clear(),r.facet(D.phrases)!=this.state.facet(D.phrases))return this.setState(r);s=hs.create(this,r,e),s.flags|=l;let f=this.viewState.scrollTarget;try{this.updateState=2;for(let u of e){if(f&&(f=f.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection;f=new ri(d.empty?d:y.cursor(d.head,d.head>d.anchor?-1:1))}for(let d of u.effects)d.is(wn)&&(f=d.value.clip(this.state))}this.viewState.update(s,f),this.bidiCache=cs.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),t=this.docView.update(s),this.state.facet(Ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Tn)!=s.state.facet(Tn)&&(this.viewState.mustMeasureContent=!0),(t||i||f||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(so))try{u(s)}catch(d){ke(this.state,d,"update listener")}(a||c)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),c&&!ff(this,c)&&h.force&&si(this.contentDOM,h.key,h.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new la(e),this.plugins=e.facet(Ri).map(i=>new er(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new Ul(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Ri),i=e.state.facet(Ri);if(t!=i){let s=[];for(let r of i){let o=t.indexOf(r);if(o<0)s.push(new er(r));else{let l=this.plugins[o];l.mustUpdate=e,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=e&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s<this.plugins.length;s++)this.plugins[s].update(this);t!=i&&this.inputState.ensureHandlers(this.plugins)}docViewUpdate(){for(let e of this.plugins){let t=e.value;if(t&&t.docViewUpdate)try{t.docViewUpdate(this)}catch(i){ke(this.state,i,"doc view update listener")}}}measure(e=!0){if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,i=this.scrollDOM,s=i.scrollTop*this.scaleY,{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(gc(i))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure(this);if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let c=h.map(d=>{try{return d.read(this)}catch(O){return ke(this.state,O),ua}}),f=hs.create(this,this.state,[]),u=!1;f.flags|=a,t?t.flags|=a:t=f,this.updateState=2,f.empty||(this.updatePlugins(f),this.inputState.update(f),this.updateAttrs(),u=this.docView.update(f),u&&this.docViewUpdate());for(let d=0;d<h.length;d++)if(c[d]!=ua)try{let O=h[d];O.write&&O.write(c[d],this)}catch(O){ke(this.state,O)}if(u&&this.docView.updateSelection(!0),!f.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight)if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,o=-1;continue}else{let O=(r<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(r).top)-o;if(O>1||O<-1){s=s+O,i.scrollTop=s/this.scaleY,o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(so))l(t)}get themeClasses(){return ho+" "+(this.state.facet(ao)?hf:af)+" "+this.state.facet(Tn)}updateAttrs(){let e=da(this,jc,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(St)?"true":"false",class:"cm-content",style:`${Z.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),da(this,Uo,t);let i=this.observer.ignore(()=>{let s=Jr(this.contentDOM,this.contentAttrs,t),r=Jr(this.dom,this.editorAttrs,e);return s||r});return this.editorAttrs=e,this.contentAttrs=t,i}showAnnouncements(e){let t=!0;for(let i of e)for(let s of i.effects)if(s.is(v.announce)){t&&(this.announceDOM.textContent=""),t=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(Ai);let e=this.state.facet(v.cspNonce);Zt.mount(this.root,this.styleModules.concat(Vp).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;t<this.measureRequests.length;t++)if(this.measureRequests[t].key===e.key){this.measureRequests[t]=e;return}}this.measureRequests.push(e)}}plugin(e){let t=this.pluginMap.get(e);return(t===void 0||t&&t.spec!=e)&&this.pluginMap.set(e,t=this.plugins.find(i=>i.spec==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,i){return ir(this,e,Ll(this,e,t,i))}moveByGroup(e,t){return ir(this,e,Ll(this,e,t,i=>hp(this,e.head,i)))}visualLineSide(e,t){let i=this.bidiSpans(e),s=this.textDirectionAt(e.from),r=i[t?i.length-1:0];return y.cursor(r.side(t,s)+e.from,r.forward(!t,s)?1:-1)}moveToLineBoundary(e,t,i=!0){return ap(this,e,t,i)}moveVertically(e,t,i){return ir(this,e,cp(this,e,t,i))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){return this.readMeasured(),Fc(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let i=this.docView.coordsAt(e,t);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(e),r=this.bidiSpans(s),o=r[$t.find(r,e-s.from,-1,t)];return _o(i,o.dir==L.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(_c)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>Hp)return Ac(e.length);let t=this.textDirectionAt(e.from),i;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||Rc(r.isolates,i=zl(this,e))))return r.order;i||(i=zl(this,e));let s=NO(e.text,t,i);return this.bidiCache.push(new cs(e.from,e.to,t,i,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||Z.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{pc(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return wn.of(new ri(typeof e=="number"?y.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return wn.of(new ri(y.cursor(i.from),"start","start",i.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return ne.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return ne.define(()=>({}),{eventObservers:e})}static theme(e,t){let i=Zt.newName(),s=[Tn.of(i),Ai.of(co(`.${i}`,e))];return t&&t.dark&&s.push(ao.of(!0)),s}static baseTheme(e){return Xt.lowest(Ai.of(co("."+ho,e,cf)))}static findFromDOM(e){var t;let i=e.querySelector(".cm-content"),s=i&&B.get(i)||B.get(e);return((t=s==null?void 0:s.rootView)===null||t===void 0?void 0:t.view)||null}}v.styleModule=Ai;v.inputHandler=Ec;v.scrollHandler=zc;v.focusChangeEffect=Vc;v.perLineTextDirection=_c;v.exceptionSink=qc;v.updateListener=so;v.editable=St;v.mouseSelectionStyle=Yc;v.dragMovesSelection=Wc;v.clickAddsSelectionRange=Mc;v.decorations=Li;v.outerDecorations=Bc;v.atomicRanges=jo;v.bidiIsolatedRanges=Nc;v.scrollMargins=Ic;v.darkTheme=ao;v.cspNonce=T.define({combine:n=>n.length?n[0]:""});v.contentAttributes=Uo;v.editorAttributes=jc;v.lineWrapping=v.contentAttributes.of({class:"cm-lineWrapping"});v.announce=A.define();const Hp=4096,ua={};class cs{constructor(e,t,i,s,r,o){this.from=e,this.to=t,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(e,t){if(t.empty&&!e.some(r=>r.fresh))return e;let i=[],s=e.length?e[e.length-1].dir:L.LTR;for(let r=Math.max(0,e.length-10);r<e.length;r++){let o=e[r];o.dir==s&&!t.touchesRange(o.from,o.to)&&i.push(new cs(t.mapPos(o.from,1),t.mapPos(o.to,-1),o.dir,o.isolates,!1,o.order))}return i}}function da(n,e,t){for(let i=n.state.facet(e),s=i.length-1;s>=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&Kr(o,t)}return t}const Kp=Z.mac?"mac":Z.windows?"win":Z.linux?"linux":"key";function Jp(n,e){const t=n.split(/-(?!$)/);let i=t[t.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;a<t.length-1;++a){const h=t[a];if(/^(cmd|meta|m)$/i.test(h))l=!0;else if(/^a(lt)?$/i.test(h))s=!0;else if(/^(c|ctrl|control)$/i.test(h))r=!0;else if(/^s(hift)?$/i.test(h))o=!0;else if(/^mod$/i.test(h))e=="mac"?l=!0:r=!0;else throw new Error("Unrecognized modifier name: "+h)}return s&&(i="Alt-"+i),r&&(i="Ctrl-"+i),l&&(i="Meta-"+i),o&&(i="Shift-"+i),i}function Cn(n,e,t){return e.altKey&&(n="Alt-"+n),e.ctrlKey&&(n="Ctrl-"+n),e.metaKey&&(n="Meta-"+n),t!==!1&&e.shiftKey&&(n="Shift-"+n),n}const em=Xt.default(v.domEventHandlers({keydown(n,e){return Of(df(e.state),n,e,"editor")}})),un=T.define({enables:em}),Oa=new WeakMap;function df(n){let e=n.facet(un),t=Oa.get(e);return t||Oa.set(e,t=nm(e.reduce((i,s)=>i.concat(s),[]))),t}function tm(n,e,t){return Of(df(n.state),e,n,t)}let xt=null;const im=4e3;function nm(n,e=Kp){let t=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,c)=>{var f,u;let d=t[o]||(t[o]=Object.create(null)),O=l.split(/ (?!$)/).map(b=>Jp(b,e));for(let b=1;b<O.length;b++){let S=O.slice(0,b).join(" ");s(S,!0),d[S]||(d[S]={preventDefault:!0,stopPropagation:!1,run:[w=>{let Q=xt={view:w,prefix:S,scope:o};return setTimeout(()=>{xt==Q&&(xt=null)},im),!0}]})}let m=O.join(" ");s(m,!1);let g=d[m]||(d[m]={preventDefault:!1,stopPropagation:!1,run:((u=(f=d._any)===null||f===void 0?void 0:f.run)===null||u===void 0?void 0:u.slice())||[]});a&&g.run.push(a),h&&(g.preventDefault=!0),c&&(g.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let c=t[h]||(t[h]=Object.create(null));c._any||(c._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:f}=o;for(let u in c)c[u].run.push(d=>f(d,fo))}let a=o[e]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return t}let fo=null;function Of(n,e,t,i){fo=e;let s=vO(e),r=ae(s,0),o=qe(r)==s.length&&s!=" ",l="",a=!1,h=!1,c=!1;xt&&xt.view==t&&xt.scope==i&&(l=xt.prefix+" ",Kc.indexOf(e.keyCode)<0&&(h=!0,xt=null));let f=new Set,u=g=>{if(g){for(let b of g.run)if(!f.has(b)&&(f.add(b),b(t)))return g.stopPropagation&&(c=!0),!0;g.preventDefault&&(g.stopPropagation&&(c=!0),h=!0)}return!1},d=n[i],O,m;return d&&(u(d[l+Cn(s,e,!o)])?a=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Z.windows&&e.ctrlKey&&e.altKey)&&(O=Tt[e.keyCode])&&O!=s?(u(d[l+Cn(O,e,!0)])||e.shiftKey&&(m=Ni[e.keyCode])!=s&&m!=O&&u(d[l+Cn(m,e,!1)]))&&(a=!0):o&&e.shiftKey&&u(d[l+Cn(s,e,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&c&&e.stopPropagation(),fo=null,a}class dn{constructor(e,t,i,s,r){this.className=e,this.left=t,this.top=i,this.width=s,this.height=r}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,i){if(i.empty){let s=e.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=pf(e);return[new dn(t,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return sm(e,t,i)}}function pf(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==L.LTR?e.left:e.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:e.top-n.scrollDOM.scrollTop*n.scaleY}}function pa(n,e,t,i){let s=n.coordsAtPos(e,t*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function sm(n,e,t){if(t.to<=n.viewport.from||t.from>=n.viewport.to)return[];let i=Math.max(t.from,n.viewport.from),s=Math.min(t.to,n.viewport.to),r=n.textDirection==L.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=pf(n),h=o.querySelector(".cm-line"),c=h&&window.getComputedStyle(h),f=l.left+(c?parseInt(c.paddingLeft)+Math.min(0,parseInt(c.textIndent)):0),u=l.right-(c?parseInt(c.paddingRight):0),d=oo(n,i),O=oo(n,s),m=d.type==be.Text?d:null,g=O.type==be.Text?O:null;if(m&&(n.lineWrapping||d.widgetLineBreaks)&&(m=pa(n,i,1,m)),g&&(n.lineWrapping||O.widgetLineBreaks)&&(g=pa(n,s,-1,g)),m&&g&&m.from==g.from&&m.to==g.to)return S(w(t.from,t.to,m));{let x=m?w(t.from,null,m):Q(d,!1),k=g?w(null,t.to,g):Q(O,!0),P=[];return(m||d).to<(g||O).from-(m&&g?1:0)||d.widgetLineBreaks>1&&x.bottom+n.defaultLineHeight/2<k.top?P.push(b(f,x.bottom,u,k.top)):x.bottom<k.top&&n.elementAtHeight((x.bottom+k.top)/2).type==be.Text&&(x.bottom=k.top=(x.bottom+k.top)/2),S(x).concat(P).concat(S(k))}function b(x,k,P,X){return new dn(e,x-a.left,k-a.top-.01,P-x,X-k+.01)}function S({top:x,bottom:k,horizontal:P}){let X=[];for(let q=0;q<P.length;q+=2)X.push(b(P[q],x,P[q+1],k));return X}function w(x,k,P){let X=1e9,q=-1e9,E=[];function Y(z,H,xe,Qe,Ze){let Me=n.coordsAtPos(z,z==P.to?-2:2),se=n.coordsAtPos(xe,xe==P.from?2:-2);!Me||!se||(X=Math.min(Me.top,se.top,X),q=Math.max(Me.bottom,se.bottom,q),Ze==L.LTR?E.push(r&&H?f:Me.left,r&&Qe?u:se.right):E.push(!r&&Qe?f:se.left,!r&&H?u:Me.right))}let W=x??P.from,U=k??P.to;for(let z of n.visibleRanges)if(z.to>W&&z.from<U)for(let H=Math.max(z.from,W),xe=Math.min(z.to,U);;){let Qe=n.state.doc.lineAt(H);for(let Ze of n.bidiSpans(Qe)){let Me=Ze.from+Qe.from,se=Ze.to+Qe.from;if(Me>=xe)break;se>H&&Y(Math.max(Me,H),x==null&&Me<=W,Math.min(se,xe),k==null&&se>=U,Ze.dir)}if(H=Qe.to+1,H>=xe)break}return E.length==0&&Y(W,x==null,U,k==null,n.textDirection),{top:X,bottom:q,horizontal:E}}function Q(x,k){let P=l.top+(k?x.top:x.bottom);return{top:P,bottom:P,horizontal:[]}}}function rm(n,e){return n.constructor==e.constructor&&n.eq(e)}class om{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(Ln)!=e.state.facet(Ln)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,i=e.facet(Ln);for(;t<i.length&&i[t]!=this.layer;)t++;this.dom.style.zIndex=String((this.layer.above?150:-1)-t)}measure(){return this.layer.markers(this.view)}scale(){let{scaleX:e,scaleY:t}=this.view;(e!=this.scaleX||t!=this.scaleY)&&(this.scaleX=e,this.scaleY=t,this.dom.style.transform=`scale(${1/e}, ${1/t})`)}draw(e){if(e.length!=this.drawn.length||e.some((t,i)=>!rm(t,this.drawn[i]))){let t=this.dom.firstChild,i=0;for(let s of e)s.update&&t&&s.constructor&&this.drawn[i].constructor&&s.update(t,this.drawn[i])?(t=t.nextSibling,i++):this.dom.insertBefore(s.draw(),t);for(;t;){let s=t.nextSibling;t.remove(),t=s}this.drawn=e}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const Ln=T.define();function mf(n){return[ne.define(e=>new om(e,n)),Ln.of(n)]}const gf=!Z.ios,Fi=T.define({combine(n){return lt(n,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function bf(n={}){return[Fi.of(n),lm,am,hm,Dc.of(!0)]}function yf(n){return n.startState.facet(Fi)!=n.state.facet(Fi)}const lm=mf({above:!0,markers(n){let{state:e}=n,t=e.facet(Fi),i=[];for(let s of e.selection.ranges){let r=s==e.selection.main;if(s.empty?!r||gf:t.drawRangeCursor){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:y.cursor(s.head,s.head>s.anchor?-1:1);for(let a of dn.forRange(n,o,l))i.push(a)}}return i},update(n,e){n.transactions.some(i=>i.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=yf(n);return t&&ma(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){ma(e.state,n)},class:"cm-cursorLayer"});function ma(n,e){e.style.animationDuration=n.facet(Fi).cursorBlinkRate+"ms"}const am=mf({above:!1,markers(n){return n.state.selection.ranges.map(e=>e.empty?[]:dn.forRange(n,"cm-selectionBackground",e)).reduce((e,t)=>e.concat(t))},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||yf(n)},class:"cm-selectionLayer"}),uo={".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"}},".cm-content":{"& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}};gf&&(uo[".cm-line"].caretColor=uo[".cm-content"].caretColor="transparent !important");const hm=Xt.highest(v.theme(uo)),Sf=A.define({map(n,e){return n==null?null:e.mapPos(n)}}),Wi=oe.define({create(){return null},update(n,e){return n!=null&&(n=e.changes.mapPos(n)),e.effects.reduce((t,i)=>i.is(Sf)?i.value:t,n)}}),cm=ne.fromClass(class{constructor(n){this.view=n,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(n){var e;let t=n.state.field(Wi);t==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(n.startState.field(Wi)!=t||n.docChanged||n.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:n}=this,e=n.state.field(Wi),t=e!=null&&n.coordsAtPos(e);if(!t)return null;let i=n.scrollDOM.getBoundingClientRect();return{left:t.left-i.left+n.scrollDOM.scrollLeft*n.scaleX,top:t.top-i.top+n.scrollDOM.scrollTop*n.scaleY,height:t.bottom-t.top}}drawCursor(n){if(this.cursor){let{scaleX:e,scaleY:t}=this.view;n?(this.cursor.style.left=n.left/e+"px",this.cursor.style.top=n.top/t+"px",this.cursor.style.height=n.height/t+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(n){this.view.state.field(Wi)!=n&&this.view.dispatch({effects:Sf.of(n)})}},{eventObservers:{dragover(n){this.setDropPos(this.view.posAtCoords({x:n.clientX,y:n.clientY}))},dragleave(n){(n.target==this.view.contentDOM||!this.view.contentDOM.contains(n.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function fm(){return[Wi,cm]}function ga(n,e,t,i,s){e.lastIndex=0;for(let r=n.iterRange(t,i),o=t,l;!r.next().done;o+=r.value.length)if(!r.lineBreak)for(;l=e.exec(r.value);)s(o+l.index,l)}function um(n,e){let t=n.visibleRanges;if(t.length==1&&t[0].from==n.viewport.from&&t[0].to==n.viewport.to)return t;let i=[];for(let{from:s,to:r}of t)s=Math.max(n.state.doc.lineAt(s).from,s-e),r=Math.min(n.state.doc.lineAt(r).to,r+e),i.length&&i[i.length-1].to>=s?i[i.length-1].to=r:i.push({from:s,to:r});return i}class dm{constructor(e){const{regexp:t,decoration:i,decorate:s,boundary:r,maxLength:o=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,s)this.addMatch=(l,a,h,c)=>s(c,h,h+l[0].length,l,a);else if(typeof i=="function")this.addMatch=(l,a,h,c)=>{let f=i(l,a,h);f&&c(h,h+l[0].length,f)};else if(i)this.addMatch=(l,a,h,c)=>c(h,h+l[0].length,i);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=r,this.maxLength=o}createDeco(e){let t=new vt,i=t.add.bind(t);for(let{from:s,to:r}of um(e,this.maxLength))ga(e.state.doc,this.regexp,s,r,(o,l)=>this.addMatch(l,e,o,i));return t.finish()}updateDeco(e,t){let i=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((r,o,l,a)=>{a>e.view.viewport.from&&l<e.view.viewport.to&&(i=Math.min(l,i),s=Math.max(a,s))}),e.viewportChanged||s-i>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,t.map(e.changes),i,s):t}updateRange(e,t,i,s){for(let r of e.visibleRanges){let o=Math.max(r.from,i),l=Math.min(r.to,s);if(l>o){let a=e.state.doc.lineAt(o),h=a.to<l?e.state.doc.lineAt(l):a,c=Math.max(r.from,a.from),f=Math.min(r.to,h.to);if(this.boundary){for(;o>a.from;o--)if(this.boundary.test(a.text[o-1-a.from])){c=o;break}for(;l<h.to;l++)if(this.boundary.test(h.text[l-h.from])){f=l;break}}let u=[],d,O=(m,g,b)=>u.push(b.range(m,g));if(a==h)for(this.regexp.lastIndex=c-a.from;(d=this.regexp.exec(a.text))&&d.index<f-a.from;)this.addMatch(d,e,d.index+a.from,O);else ga(e.state.doc,this.regexp,c,f,(m,g)=>this.addMatch(g,e,m,O));t=t.update({filterFrom:c,filterTo:f,filter:(m,g)=>m<c||g>f,add:u})}}return t}}const Oo=/x/.unicode!=null?"gu":"g",Om=new RegExp(`[\0-\b
+--Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,Oo),pm={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let rr=null;function mm(){var n;if(rr==null&&typeof document<"u"&&document.body){let e=document.body.style;rr=((n=e.tabSize)!==null&&n!==void 0?n:e.MozTabSize)!=null}return rr||!1}const Fn=T.define({combine(n){let e=lt(n,{render:null,specialChars:Om,addSpecialChars:null});return(e.replaceTabs=!mm())&&(e.specialChars=new RegExp("	|"+e.specialChars.source,Oo)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Oo)),e}});function xf(n={}){return[Fn.of(n),gm()]}let ba=null;function gm(){return ba||(ba=ne.fromClass(class{constructor(n){this.view=n,this.decorations=R.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(n.state.facet(Fn)),this.decorations=this.decorator.createDeco(n)}makeDecorator(n){return new dm({regexp:n.specialChars,decoration:(e,t,i)=>{let{doc:s}=t.state,r=ae(e[0],0);if(r==9){let o=s.lineAt(i),l=t.state.tabSize,a=yi(o.text,l,i-o.from);return R.replace({widget:new xm((l-a%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[r]||(this.decorationCache[r]=R.replace({widget:new Sm(n,r)}))},boundary:n.replaceTabs?void 0:/[^]/})}update(n){let e=n.state.facet(Fn);n.startState.facet(Fn)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(n.view)):this.decorations=this.decorator.updateDeco(n,this.decorations)}},{decorations:n=>n.decorations}))}const bm="•";function ym(n){return n>=32?bm:n==10?"␤":String.fromCharCode(9216+n)}class Sm extends mt{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=ym(this.code),i=e.state.phrase("Control character")+" "+(pm[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,i,t);if(s)return s;let r=document.createElement("span");return r.textContent=t,r.title=i,r.setAttribute("aria-label",i),r.className="cm-specialChar",r}ignoreEvent(){return!1}}class xm extends mt{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent="	",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function Qm(){return $m}const wm=R.line({class:"cm-activeLine"}),$m=ne.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=-1,t=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>e&&(t.push(wm.range(s.from)),e=s.from)}return R.set(t)}},{decorations:n=>n.decorations}),po=2e3;function Pm(n,e,t){let i=Math.min(e.line,t.line),s=Math.max(e.line,t.line),r=[];if(e.off>po||t.off>po||e.col<0||t.col<0){let o=Math.min(e.off,t.off),l=Math.max(e.off,t.off);for(let a=i;a<=s;a++){let h=n.doc.line(a);h.length<=l&&r.push(y.range(h.from+o,h.to+l))}}else{let o=Math.min(e.col,t.col),l=Math.max(e.col,t.col);for(let a=i;a<=s;a++){let h=n.doc.line(a),c=Br(h.text,o,n.tabSize,!0);if(c<0)r.push(y.cursor(h.to));else{let f=Br(h.text,l,n.tabSize);r.push(y.range(h.from+c,h.from+f))}}}return r}function km(n,e){let t=n.coordsAtPos(n.viewport.from);return t?Math.round(Math.abs((t.left-e)/n.defaultCharacterWidth)):-1}function ya(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1),i=n.state.doc.lineAt(t),s=t-i.from,r=s>po?-1:s==i.length?km(n,e.clientX):yi(i.text,n.state.tabSize,t-i.from);return{line:i.number,col:r,off:s}}function vm(n,e){let t=ya(n,e),i=n.state.selection;return t?{update(s){if(s.docChanged){let r=s.changes.mapPos(s.startState.doc.line(t.line).from),o=s.state.doc.lineAt(r);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},i=i.map(s.changes)}},get(s,r,o){let l=ya(n,s);if(!l)return i;let a=Pm(n.state,t,l);return a.length?o?y.create(a.concat(i.ranges)):y.create(a):i}}:null}function Zm(n){let e=t=>t.altKey&&t.button==0;return v.mouseSelectionStyle.of((t,i)=>e(i)?vm(t,i):null)}const Tm={Alt:[18,n=>!!n.altKey],Control:[17,n=>!!n.ctrlKey],Shift:[16,n=>!!n.shiftKey],Meta:[91,n=>!!n.metaKey]},Cm={style:"cursor: crosshair"};function Rm(n={}){let[e,t]=Tm[n.key||"Alt"],i=ne.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||t(s))},keyup(s){(s.keyCode==e||!t(s))&&this.set(!1)},mousemove(s){this.set(t(s))}}});return[i,v.contentAttributes.of(s=>{var r;return!((r=s.plugin(i))===null||r===void 0)&&r.isDown?Cm:null})]}const Pi="-10000px";class Qf{constructor(e,t,i,s){this.facet=t,this.createTooltipView=i,this.removeTooltipView=s,this.input=e.state.facet(t),this.tooltips=this.input.filter(o=>o);let r=null;this.tooltipViews=this.tooltips.map(o=>r=i(o,r))}update(e,t){var i;let s=e.state.facet(this.facet),r=s.filter(a=>a);if(s===this.input){for(let a of this.tooltipViews)a.update&&a.update(e);return!1}let o=[],l=t?[]:null;for(let a=0;a<r.length;a++){let h=r[a],c=-1;if(h){for(let f=0;f<this.tooltips.length;f++){let u=this.tooltips[f];u&&u.create==h.create&&(c=f)}if(c<0)o[a]=this.createTooltipView(h,a?o[a-1]:null),l&&(l[a]=!!h.above);else{let f=o[a]=this.tooltipViews[c];l&&(l[a]=t[c]),f.update&&f.update(e)}}}for(let a of this.tooltipViews)o.indexOf(a)<0&&(this.removeTooltipView(a),(i=a.destroy)===null||i===void 0||i.call(a));return t&&(l.forEach((a,h)=>t[h]=a),t.length=l.length),this.input=s,this.tooltips=r,this.tooltipViews=o,!0}}function Am(n){let{win:e}=n;return{top:0,left:0,bottom:e.innerHeight,right:e.innerWidth}}const or=T.define({combine:n=>{var e,t,i;return{position:Z.ios?"absolute":((e=n.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=n.find(s=>s.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((i=n.find(s=>s.tooltipSpace))===null||i===void 0?void 0:i.tooltipSpace)||Am}}}),Sa=new WeakMap,Io=ne.fromClass(class{constructor(n){this.view=n,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=n.state.facet(or);this.position=e.position,this.parent=e.parent,this.classes=n.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Qf(n,Go,(t,i)=>this.createTooltip(t,i),t=>{this.resizeObserver&&this.resizeObserver.unobserve(t.dom),t.dom.remove()}),this.above=this.manager.tooltips.map(t=>!!t.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),n.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let n of this.manager.tooltipViews)this.intersectionObserver.observe(n.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(n){n.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(n,this.above);e&&this.observeIntersection();let t=e||n.geometryChanged,i=n.state.facet(or);if(i.position!=this.position&&!this.madeAbsolute){this.position=i.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;t=!0}if(i.parent!=this.parent){this.parent&&this.container.remove(),this.parent=i.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(n,e){let t=n.create(this.view),i=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),n.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",t.dom.appendChild(s)}return t.dom.style.position=this.position,t.dom.style.top=Pi,t.dom.style.left="0px",this.container.insertBefore(t.dom,i),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var n,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let i of this.manager.tooltipViews)i.dom.remove(),(n=i.destroy)===null||n===void 0||n.call(i);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.intersectionObserver)===null||t===void 0||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let n=this.view.dom.getBoundingClientRect(),e=1,t=1,i=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:s}=this.manager.tooltipViews[0];if(Z.gecko)i=s.offsetParent!=this.container.ownerDocument.body;else if(s.style.top==Pi&&s.style.left=="0px"){let r=s.getBoundingClientRect();i=Math.abs(r.top+1e4)>1||Math.abs(r.left)>1}}if(i||this.position=="absolute")if(this.parent){let s=this.parent.getBoundingClientRect();s.width&&s.height&&(e=s.width/this.parent.offsetWidth,t=s.height/this.parent.offsetHeight)}else({scaleX:e,scaleY:t}=this.view.viewState);return{editor:n,parent:this.parent?this.container.getBoundingClientRect():n,pos:this.manager.tooltips.map((s,r)=>{let o=this.manager.tooltipViews[r];return o.getCoords?o.getCoords(s.pos):this.view.coordsAtPos(s.pos)}),size:this.manager.tooltipViews.map(({dom:s})=>s.getBoundingClientRect()),space:this.view.state.facet(or).tooltipSpace(this.view),scaleX:e,scaleY:t,makeAbsolute:i}}writeMeasure(n){var e;if(n.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{editor:t,space:i,scaleX:s,scaleY:r}=n,o=[];for(let l=0;l<this.manager.tooltips.length;l++){let a=this.manager.tooltips[l],h=this.manager.tooltipViews[l],{dom:c}=h,f=n.pos[l],u=n.size[l];if(!f||f.bottom<=Math.max(t.top,i.top)||f.top>=Math.min(t.bottom,i.bottom)||f.right<Math.max(t.left,i.left)-.1||f.left>Math.min(t.right,i.right)+.1){c.style.top=Pi;continue}let d=a.arrow?h.dom.querySelector(".cm-tooltip-arrow"):null,O=d?7:0,m=u.right-u.left,g=(e=Sa.get(h))!==null&&e!==void 0?e:u.bottom-u.top,b=h.offset||Mm,S=this.view.textDirection==L.LTR,w=u.width>i.right-i.left?S?i.left:i.right-u.width:S?Math.min(f.left-(d?14:0)+b.x,i.right-m):Math.max(i.left,f.left-m+(d?14:0)-b.x),Q=this.above[l];!a.strictSide&&(Q?f.top-(u.bottom-u.top)-b.y<i.top:f.bottom+(u.bottom-u.top)+b.y>i.bottom)&&Q==i.bottom-f.bottom>f.top-i.top&&(Q=this.above[l]=!Q);let x=(Q?f.top-i.top:i.bottom-f.bottom)-O;if(x<g&&h.resize!==!1){if(x<this.view.defaultLineHeight){c.style.top=Pi;continue}Sa.set(h,g),c.style.height=(g=x)/r+"px"}else c.style.height&&(c.style.height="");let k=Q?f.top-g-O-b.y:f.bottom+O+b.y,P=w+m;if(h.overlap!==!0)for(let X of o)X.left<P&&X.right>w&&X.top<k+g&&X.bottom>k&&(k=Q?X.top-g-2-O:X.bottom+O+2);if(this.position=="absolute"?(c.style.top=(k-n.parent.top)/r+"px",c.style.left=(w-n.parent.left)/s+"px"):(c.style.top=k/r+"px",c.style.left=w/s+"px"),d){let X=f.left+(S?b.x:-b.x)-(w+14-7);d.style.left=X/s+"px"}h.overlap!==!0&&o.push({left:w,top:k,right:P,bottom:k+g}),c.classList.toggle("cm-tooltip-above",Q),c.classList.toggle("cm-tooltip-below",!Q),h.positioned&&h.positioned(n.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let n of this.manager.tooltipViews)n.dom.style.top=Pi}},{eventObservers:{scroll(){this.maybeMeasure()}}}),Xm=v.baseTheme({".cm-tooltip":{zIndex:100,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),Mm={x:0,y:0},Go=T.define({enables:[Io,Xm]}),fs=T.define({combine:n=>n.reduce((e,t)=>e.concat(t),[])});class Es{static create(e){return new Es(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Qf(e,fs,(t,i)=>this.createHostedView(t,i),t=>t.dom.remove())}createHostedView(e,t){let i=e.create(this.view);return i.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(i.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&i.mount&&i.mount(this.view),i}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(let t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let t of this.manager.tooltipViews)(e=t.destroy)===null||e===void 0||e.call(t)}passProp(e){let t;for(let i of this.manager.tooltipViews){let s=i[e];if(s!==void 0){if(t===void 0)t=s;else if(t!==s)return}}return t}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const Wm=Go.compute([fs],n=>{let e=n.facet(fs);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var i;return(i=t.end)!==null&&i!==void 0?i:t.pos})),create:Es.create,above:e[0].above,arrow:e.some(t=>t.arrow)}});class Ym{constructor(e,t,i,s,r){this.view=e,this.source=t,this.field=i,this.setHover=s,this.hoverTime=r,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;e<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-e):this.startHover()}startHover(){clearTimeout(this.restartTimeout);let{view:e,lastMove:t}=this,i=e.docView.nearest(t.target);if(!i)return;let s,r=1;if(i instanceof wt)s=i.posAtStart;else{if(s=e.posAtCoords(t),s==null)return;let l=e.coordsAtPos(s);if(!l||t.y<l.top||t.y>l.bottom||t.x<l.left-e.defaultCharacterWidth||t.x>l.right+e.defaultCharacterWidth)return;let a=e.bidiSpans(e.state.doc.lineAt(s)).find(c=>c.from<=s&&c.to>=s),h=a&&a.dir==L.RTL?-1:1;r=t.x<l.left?-h:h}let o=this.source(e,s,r);if(o!=null&&o.then){let l=this.pending={pos:s};o.then(a=>{this.pending==l&&(this.pending=null,a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])}))},a=>ke(e.state,a,"hover tooltip"))}else o&&!(Array.isArray(o)&&!o.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(o)?o:[o])})}get tooltip(){let e=this.view.plugin(Io),t=e?e.manager.tooltips.findIndex(i=>i.create==Es.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,i;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:r}=this;if(s.length&&r&&!qm(r.dom,e)||this.pending){let{pos:o}=s[0]||this.pending,l=(i=(t=s[0])===null||t===void 0?void 0:t.end)!==null&&i!==void 0?i:o;(o==l?this.view.posAtCoords(this.lastMove)!=o:!Em(this.view,o,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:t}=this;if(t.length){let{tooltip:i}=this;i&&i.dom.contains(e.relatedTarget)?this.watchTooltipLeave(i.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=i=>{e.removeEventListener("mouseleave",t),this.active.length&&!this.view.dom.contains(i.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",t)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const Rn=4;function qm(n,e){let t=n.getBoundingClientRect();return e.clientX>=t.left-Rn&&e.clientX<=t.right+Rn&&e.clientY>=t.top-Rn&&e.clientY<=t.bottom+Rn}function Em(n,e,t,i,s,r){let o=n.scrollDOM.getBoundingClientRect(),l=n.documentTop+n.documentPadding.top+n.contentHeight;if(o.left>i||o.right<i||o.top>s||Math.min(o.bottom,l)<s)return!1;let a=n.posAtCoords({x:i,y:s},!1);return a>=e&&a<=t}function Vm(n,e={}){let t=A.define(),i=oe.define({create(){return[]},update(s,r){if(s.length&&(e.hideOnChange&&(r.docChanged||r.selection)?s=[]:e.hideOn&&(s=s.filter(o=>!e.hideOn(r,o))),r.docChanged)){let o=[];for(let l of s){let a=r.changes.mapPos(l.pos,-1,ce.TrackDel);if(a!=null){let h=Object.assign(Object.create(null),l);h.pos=a,h.end!=null&&(h.end=r.changes.mapPos(h.end)),o.push(h)}}s=o}for(let o of r.effects)o.is(t)&&(s=o.value),o.is(_m)&&(s=[]);return s},provide:s=>fs.from(s)});return[i,ne.define(s=>new Ym(s,n,i,t,e.hoverTime||300)),Wm]}function wf(n,e){let t=n.plugin(Io);if(!t)return null;let i=t.manager.tooltips.indexOf(e);return i<0?null:t.manager.tooltipViews[i]}const _m=A.define(),xa=T.define({combine(n){let e,t;for(let i of n)e=e||i.topContainer,t=t||i.bottomContainer;return{topContainer:e,bottomContainer:t}}});function Hi(n,e){let t=n.plugin($f),i=t?t.specs.indexOf(e):-1;return i>-1?t.panels[i]:null}const $f=ne.fromClass(class{constructor(n){this.input=n.state.facet(Ki),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(n));let e=n.state.facet(xa);this.top=new An(n,!0,e.topContainer),this.bottom=new An(n,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(n){let e=n.state.facet(xa);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new An(n.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new An(n.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=n.state.facet(Ki);if(t!=this.input){let i=t.filter(a=>a),s=[],r=[],o=[],l=[];for(let a of i){let h=this.specs.indexOf(a),c;h<0?(c=a(n.view),l.push(c)):(c=this.panels[h],c.update&&c.update(n)),s.push(c),(c.top?r:o).push(c)}this.specs=i,this.panels=s,this.top.sync(r),this.bottom.sync(o);for(let a of l)a.dom.classList.add("cm-panel"),a.mount&&a.mount()}else for(let i of this.panels)i.update&&i.update(n)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:n=>v.scrollMargins.of(e=>{let t=e.plugin(n);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})});class An{constructor(e,t,i){this.view=e,this.top=t,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=Qa(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=Qa(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function Qa(n){let e=n.nextSibling;return n.remove(),e}const Ki=T.define({enables:$f});class Ot extends Dt{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}Ot.prototype.elementClass="";Ot.prototype.toDOM=void 0;Ot.prototype.mapMode=ce.TrackBefore;Ot.prototype.startSide=Ot.prototype.endSide=-1;Ot.prototype.point=!0;const Hn=T.define(),Dm={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>V.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},zi=T.define();function zm(n){return[Pf(),zi.of(Object.assign(Object.assign({},Dm),n))]}const wa=T.define({combine:n=>n.some(e=>e)});function Pf(n){return[Um]}const Um=ne.fromClass(class{constructor(n){this.view=n,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(zi).map(e=>new Pa(n,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!n.state.facet(wa),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}update(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,i=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(i<(t.to-t.from)*.8)}n.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px"),this.view.state.facet(wa)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&this.dom.remove();let t=V.iter(this.view.state.facet(Hn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new jm(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==be.Text&&o){mo(t,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==be.Text){mo(t,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(n){let e=n.startState.facet(zi),t=n.state.facet(zi),i=n.docChanged||n.heightChanged||n.viewportChanged||!V.eq(n.startState.facet(Hn),n.state.facet(Hn),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of t){let o=e.indexOf(r);o<0?s.push(new Pa(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove()}},{provide:n=>v.scrollMargins.of(e=>{let t=e.plugin(n);return!t||t.gutters.length==0||!t.fixed?null:e.textDirection==L.LTR?{left:t.dom.offsetWidth*e.scaleX}:{right:t.dom.offsetWidth*e.scaleX}})});function $a(n){return Array.isArray(n)?n:[n]}function mo(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}class jm{constructor(e,t,i){this.gutter=e,this.height=i,this.i=0,this.cursor=V.iter(e.markers,t.from)}addElement(e,t,i){let{gutter:s}=this,r=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==s.elements.length){let l=new kf(e,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,o,r,i);this.height=t.bottom,this.i++}line(e,t,i){let s=[];mo(this.cursor,s,t.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(e,t,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,s)}widget(e,t){let i=this.gutter.config.widgetMarker(e,t.widget,t);i&&this.addElement(e,t,[i])}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}}class Pa{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in t.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[i](e,l,s)&&s.preventDefault()});this.markers=$a(t.markers(e)),t.initialSpacer&&(this.spacer=new kf(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=$a(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let i=e.view.viewport;return!V.eq(this.markers,t,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class kf{constructor(e,t,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,i,s)}update(e,t,i,s){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Bm(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,t){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=r<t.length?t[r++]:null,h=!1;if(a){let c=a.elementClass;c&&(i+=" "+c);for(let f=o;f<this.markers.length;f++)if(this.markers[f].compare(a)){l=f,h=!0;break}}else l=this.markers.length;for(;o<l;){let c=this.markers[o++];if(c.toDOM){c.destroy(s);let f=s.nextSibling;s.remove(),s=f}}if(!a)break;a.toDOM&&(h?s=s.nextSibling:this.dom.insertBefore(a.toDOM(e),s)),h&&o++}this.dom.className=i,this.markers=t}destroy(){this.setMarkers(null,[])}}function Bm(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++)if(!n[t].compare(e[t]))return!1;return!0}const Nm=T.define(),Kt=T.define({combine(n){return lt(n,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){let i=Object.assign({},e);for(let s in t){let r=i[s],o=t[s];i[s]=r?(l,a,h)=>r(l,a,h)||o(l,a,h):o}return i}})}});class lr extends Ot{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function ar(n,e){return n.state.facet(Kt).formatNumber(e,n.state)}const Im=zi.compute([Kt],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Nm)},lineMarker(e,t,i){return i.some(s=>s.toDOM)?null:new lr(ar(e,e.state.doc.lineAt(t.from).number))},widgetMarker:()=>null,lineMarkerChange:e=>e.startState.facet(Kt)!=e.state.facet(Kt),initialSpacer(e){return new lr(ar(e,ka(e.state.doc.lines)))},updateSpacer(e,t){let i=ar(t.view,ka(t.view.state.doc.lines));return i==e.number?e:new lr(i)},domEventHandlers:n.facet(Kt).domEventHandlers}));function Gm(n={}){return[Kt.of(n),Pf(),Im]}function ka(n){let e=9;for(;e<n;)e=e*10+9;return e}const Lm=new class extends Ot{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},Fm=Hn.compute(["selection"],n=>{let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>t&&(t=s,e.push(Lm.range(s)))}return V.of(e)});function Hm(){return Fm}const vf=1024;let Km=0;class Ee{constructor(e,t){this.from=e,this.to=t}}class M{constructor(e={}){this.id=Km++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=Se.match(e)),t=>{let i=e(t);return i===void 0?null:[this,i]}}}M.closedBy=new M({deserialize:n=>n.split(" ")});M.openedBy=new M({deserialize:n=>n.split(" ")});M.group=new M({deserialize:n=>n.split(" ")});M.isolate=new M({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});M.contextHash=new M({perNode:!0});M.lookAhead=new M({perNode:!0});M.mounted=new M({perNode:!0});class Ji{constructor(e,t,i){this.tree=e,this.overlay=t,this.parser=i}static get(e){return e&&e.props&&e.props[M.mounted.id]}}const Jm=Object.create(null);class Se{constructor(e,t,i,s=0){this.name=e,this.props=t,this.id=i,this.flags=s}static define(e){let t=e.props&&e.props.length?Object.create(null):Jm,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new Se(e.name||"",t,e.id,i);if(e.props){for(let r of e.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[r[0].id]=r[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(M.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let i in e)for(let s of i.split(" "))t[s]=e[i];return i=>{for(let s=i.prop(M.group),r=-1;r<(s?s.length:0);r++){let o=t[r<0?i.name:s[r]];if(o)return o}}}}Se.none=new Se("",Object.create(null),0,8);class Lo{constructor(e){this.types=e;for(let t=0;t<e.length;t++)if(e[t].id!=t)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...e){let t=[];for(let i of this.types){let s=null;for(let r of e){let o=r(i);o&&(s||(s=Object.assign({},i.props)),s[o[0].id]=o[1])}t.push(s?new Se(i.name,s,i.id,i.flags):i)}return new Lo(t)}}const Xn=new WeakMap,va=new WeakMap;var I;(function(n){n[n.ExcludeBuffers=1]="ExcludeBuffers",n[n.IncludeAnonymous=2]="IncludeAnonymous",n[n.IgnoreMounts=4]="IgnoreMounts",n[n.IgnoreOverlays=8]="IgnoreOverlays"})(I||(I={}));class K{constructor(e,t,i,s,r){if(this.type=e,this.children=t,this.positions=i,this.length=s,this.props=null,r&&r.length){this.props=Object.create(null);for(let[o,l]of r)this.props[typeof o=="number"?o:o.id]=l}}toString(){let e=Ji.get(this);if(e&&!e.overlay)return e.tree.toString();let t="";for(let i of this.children){let s=i.toString();s&&(t&&(t+=","),t+=s)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(t.length?"("+t+")":""):t}cursor(e=0){return new us(this.topNode,e)}cursorAt(e,t=0,i=0){let s=Xn.get(this)||this.topNode,r=new us(s);return r.moveTo(e,t),Xn.set(this,r._tree),r}get topNode(){return new pe(this,0,0,null)}resolve(e,t=0){let i=en(Xn.get(this)||this.topNode,e,t,!1);return Xn.set(this,i),i}resolveInner(e,t=0){let i=en(va.get(this)||this.topNode,e,t,!0);return va.set(this,i),i}resolveStack(e,t=0){return ig(this,e,t)}iterate(e){let{enter:t,leave:i,from:s=0,to:r=this.length}=e,o=e.mode||0,l=(o&I.IncludeAnonymous)>0;for(let a=this.cursor(o|I.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Ko(Se.none,this.children,this.positions,0,this.children.length,0,this.length,(t,i,s)=>new K(this.type,t,i,s,this.propValues),e.makeTree||((t,i,s)=>new K(Se.none,t,i,s)))}static build(e){return ng(e)}}K.empty=new K(Se.none,[],[],0);class Fo{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Fo(this.buffer,this.index)}}class Rt{constructor(e,t,i){this.buffer=e,this.length=t,this.set=i}get type(){return Se.none}toString(){let e=[];for(let t=0;t<this.buffer.length;)e.push(this.childString(t)),t=this.buffer[t+3];return e.join(",")}childString(e){let t=this.buffer[e],i=this.buffer[e+3],s=this.set.types[t],r=s.name;if(/\W/.test(r)&&!s.isError&&(r=JSON.stringify(r)),e+=4,i==e)return r;let o=[];for(;e<i;)o.push(this.childString(e)),e=this.buffer[e+3];return r+"("+o.join(",")+")"}findChild(e,t,i,s,r){let{buffer:o}=this,l=-1;for(let a=e;a!=t&&!(Zf(r,s,o[a+1],o[a+2])&&(l=a,i>0));a=o[a+3]);return l}slice(e,t,i){let s=this.buffer,r=new Uint16Array(t-e),o=0;for(let l=e,a=0;l<t;){r[a++]=s[l++],r[a++]=s[l++]-i;let h=r[a++]=s[l++]-i;r[a++]=s[l++]-e,o=Math.max(o,h)}return new Rt(r,o,this.set)}}function Zf(n,e,t,i){switch(n){case-2:return t<e;case-1:return i>=e&&t<e;case 0:return t<e&&i>e;case 1:return t<=e&&i>e;case 2:return i>e;case 4:return!0}}function en(n,e,t,i){for(var s;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to<e);){let o=!i&&n instanceof pe&&n.index<0?null:n.parent;if(!o)return n;n=o}let r=i?0:I.IgnoreOverlays;if(i)for(let o=n,l=o.parent;l;o=l,l=o.parent)o instanceof pe&&o.index<0&&((s=l.enter(e,t,r))===null||s===void 0?void 0:s.from)!=o.from&&(n=l);for(;;){let o=n.enter(e,t,r);if(!o)return n;n=o}}class Tf{cursor(e=0){return new us(this,e)}getChild(e,t=null,i=null){let s=Za(this,e,t,i);return s.length?s[0]:null}getChildren(e,t=null,i=null){return Za(this,e,t,i)}resolve(e,t=0){return en(this,e,t,!1)}resolveInner(e,t=0){return en(this,e,t,!0)}matchContext(e){return go(this,e)}enterUnfinishedNodesBefore(e){let t=this.childBefore(e),i=this;for(;t;){let s=t.lastChild;if(!s||s.to!=t.to)break;s.type.isError&&s.from==s.to?(i=t,t=s.prevSibling):t=s}return i}get node(){return this}get next(){return this.parent}}class pe extends Tf{constructor(e,t,i,s){super(),this._tree=e,this.from=t,this.index=i,this._parent=s}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(e,t,i,s,r=0){for(let o=this;;){for(let{children:l,positions:a}=o._tree,h=t>0?l.length:-1;e!=h;e+=t){let c=l[e],f=a[e]+o.from;if(Zf(s,i,f,f+c.length)){if(c instanceof Rt){if(r&I.ExcludeBuffers)continue;let u=c.findChild(0,c.buffer.length,t,i-f,s);if(u>-1)return new it(new eg(o,c,e,f),null,u)}else if(r&I.IncludeAnonymous||!c.type.isAnonymous||Ho(c)){let u;if(!(r&I.IgnoreMounts)&&(u=Ji.get(c))&&!u.overlay)return new pe(u.tree,f,e,o);let d=new pe(c,f,e,o);return r&I.IncludeAnonymous||!d.type.isAnonymous?d:d.nextChild(t<0?c.children.length-1:0,t,i,s)}}}if(r&I.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,i=0){let s;if(!(i&I.IgnoreOverlays)&&(s=Ji.get(this._tree))&&s.overlay){let r=e-this.from;for(let{from:o,to:l}of s.overlay)if((t>0?o<=r:o<r)&&(t<0?l>=r:l>r))return new pe(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function Za(n,e,t,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(t!=null){for(let o=!1;!o;)if(o=s.type.is(t),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function go(n,e,t=e.length-1){for(let i=n.parent;t>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[t]&&e[t]!=i.name)return!1;t--}}return!0}class eg{constructor(e,t,i,s){this.parent=e,this.buffer=t,this.index=i,this.start=s}}class it extends Tf{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,i){super(),this.context=e,this._parent=t,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,t,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.context.start,i);return r<0?null:new it(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,i=0){if(i&I.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return r<0?null:new it(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new it(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new it(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];e.push(i.slice(s,r,o)),t.push(0)}return new K(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function Cf(n){if(!n.length)return null;let e=0,t=n[0];for(let r=1;r<n.length;r++){let o=n[r];(o.from>t.from||o.to<t.to)&&(t=o,e=r)}let i=t instanceof pe&&t.index<0?null:t.parent,s=n.slice();return i?s[e]=i:s.splice(e,1),new tg(s,t)}class tg{constructor(e,t){this.heads=e,this.node=t}get next(){return Cf(this.heads)}}function ig(n,e,t){let i=n.resolveInner(e,t),s=null;for(let r=i instanceof pe?i:i.context.parent;r;r=r.parent)if(r.index<0){let o=r.parent;(s||(s=[i])).push(o.resolve(e,t)),r=o}else{let o=Ji.get(r.tree);if(o&&o.overlay&&o.overlay[0].from<=e&&o.overlay[o.overlay.length-1].to>=e){let l=new pe(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(en(l,e,t,!1))}}return s?Cf(s):i}class us{get name(){return this.type.name}constructor(e,t=0){if(this.mode=t,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof pe)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let i=e._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:i,buffer:s}=this.buffer;return this.type=t||s.set.types[s.buffer[e]],this.from=i+s.buffer[e+1],this.to=i+s.buffer[e+2],!0}yield(e){return e?e instanceof pe?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,i){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,i=this.mode){return this.buffer?i&I.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&I.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&I.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,i=this.stack.length-1;if(e<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(t.findChild(s,this.index,-1,0,4))}else{let s=t.buffer[this.index+3];if(s<(i<0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,i,{buffer:s}=this;if(s){if(e>0){if(this.index<s.buffer.buffer.length)return!1}else for(let r=0;r<this.index;r++)if(s.buffer.buffer[r+3]<this.index)return!1;({index:t,parent:i}=s)}else({index:t,_parent:i}=this._tree);for(;i;{index:t,_parent:i}=i)if(t>-1)for(let r=t+e,o=e<0?-1:i._tree.children.length;r!=o;r+=e){let l=i._tree.children[r];if(this.mode&I.IncludeAnonymous||l instanceof Rt||!l.type.isAnonymous||Ho(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let e=this.bufferNode,t=null,i=0;if(e&&e.context==this.buffer)e:for(let s=this.index,r=this.stack.length;r>=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;t=o,i=r+1;break e}s=this.stack[--r]}for(let s=i;s<this.stack.length;s++)t=new it(this.buffer,t,this.stack[s]);return this.bufferNode=new it(this.buffer,t,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,t){for(let i=0;;){let s=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){i++;continue}this.type.isAnonymous||(s=!0)}for(;s&&t&&t(this),s=this.type.isAnonymous,!this.nextSibling();){if(!i)return;this.parent(),i--,s=!0}}}matchContext(e){if(!this.buffer)return go(this.node,e);let{buffer:t}=this.buffer,{types:i}=t.set;for(let s=e.length-1,r=this.stack.length-1;s>=0;r--){if(r<0)return go(this.node,e,s);let o=i[t.buffer[this.stack[r]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}}function Ho(n){return n.children.some(e=>e instanceof Rt||!e.type.isAnonymous||Ho(e))}function ng(n){var e;let{buffer:t,nodeSet:i,maxBufferLength:s=vf,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(t)?new Fo(t,t.length):t,a=i.types,h=0,c=0;function f(x,k,P,X,q,E){let{id:Y,start:W,end:U,size:z}=l,H=c;for(;z<0;)if(l.next(),z==-1){let se=r[Y];P.push(se),X.push(W-x);return}else if(z==-3){h=Y;return}else if(z==-4){c=Y;return}else throw new RangeError(`Unrecognized record size: ${z}`);let xe=a[Y],Qe,Ze,Me=W-x;if(U-W<=s&&(Ze=g(l.pos-k,q))){let se=new Uint16Array(Ze.size-Ze.skip),We=l.pos-Ze.size,Ge=se.length;for(;l.pos>We;)Ge=b(Ze.start,se,Ge);Qe=new Rt(se,U-Ze.start,i),Me=Ze.start-x}else{let se=l.pos-z;l.next();let We=[],Ge=[],Wt=Y>=o?Y:-1,Nt=0,yn=U;for(;l.pos>se;)Wt>=0&&l.id==Wt&&l.size>=0?(l.end<=yn-s&&(O(We,Ge,W,Nt,l.end,yn,Wt,H),Nt=We.length,yn=l.end),l.next()):E>2500?u(W,se,We,Ge):f(W,se,We,Ge,Wt,E+1);if(Wt>=0&&Nt>0&&Nt<We.length&&O(We,Ge,W,Nt,W,yn,Wt,H),We.reverse(),Ge.reverse(),Wt>-1&&Nt>0){let xl=d(xe);Qe=Ko(xe,We,Ge,0,We.length,0,U-W,xl,xl)}else Qe=m(xe,We,Ge,U-W,H-U)}P.push(Qe),X.push(Me)}function u(x,k,P,X){let q=[],E=0,Y=-1;for(;l.pos>k;){let{id:W,start:U,end:z,size:H}=l;if(H>4)l.next();else{if(Y>-1&&U<Y)break;Y<0&&(Y=z-s),q.push(W,U,z),E++,l.next()}}if(E){let W=new Uint16Array(E*4),U=q[q.length-2];for(let z=q.length-3,H=0;z>=0;z-=3)W[H++]=q[z],W[H++]=q[z+1]-U,W[H++]=q[z+2]-U,W[H++]=H;P.push(new Rt(W,q[2]-U,i)),X.push(U-x)}}function d(x){return(k,P,X)=>{let q=0,E=k.length-1,Y,W;if(E>=0&&(Y=k[E])instanceof K){if(!E&&Y.type==x&&Y.length==X)return Y;(W=Y.prop(M.lookAhead))&&(q=P[E]+Y.length+W)}return m(x,k,P,X,q)}}function O(x,k,P,X,q,E,Y,W){let U=[],z=[];for(;x.length>X;)U.push(x.pop()),z.push(k.pop()+P-q);x.push(m(i.types[Y],U,z,E-q,W-E)),k.push(q-P)}function m(x,k,P,X,q=0,E){if(h){let Y=[M.contextHash,h];E=E?[Y].concat(E):[Y]}if(q>25){let Y=[M.lookAhead,q];E=E?[Y].concat(E):[Y]}return new K(x,k,P,X,E)}function g(x,k){let P=l.fork(),X=0,q=0,E=0,Y=P.end-s,W={size:0,start:0,skip:0};e:for(let U=P.pos-x;P.pos>U;){let z=P.size;if(P.id==k&&z>=0){W.size=X,W.start=q,W.skip=E,E+=4,X+=4,P.next();continue}let H=P.pos-z;if(z<0||H<U||P.start<Y)break;let xe=P.id>=o?4:0,Qe=P.start;for(P.next();P.pos>H;){if(P.size<0)if(P.size==-3)xe+=4;else break e;else P.id>=o&&(xe+=4);P.next()}q=Qe,X+=z,E+=xe}return(k<0||X==x)&&(W.size=X,W.start=q,W.skip=E),W.size>4?W:void 0}function b(x,k,P){let{id:X,start:q,end:E,size:Y}=l;if(l.next(),Y>=0&&X<o){let W=P;if(Y>4){let U=l.pos-(Y-4);for(;l.pos>U;)P=b(x,k,P)}k[--P]=W,k[--P]=E-x,k[--P]=q-x,k[--P]=X}else Y==-3?h=X:Y==-4&&(c=X);return P}let S=[],w=[];for(;l.pos>0;)f(n.start||0,n.bufferStart||0,S,w,-1,0);let Q=(e=n.length)!==null&&e!==void 0?e:S.length?w[0]+S[0].length:0;return new K(a[n.topID],S.reverse(),w.reverse(),Q)}const Ta=new WeakMap;function Kn(n,e){if(!n.isAnonymous||e instanceof Rt||e.type!=n)return 1;let t=Ta.get(e);if(t==null){t=1;for(let i of e.children){if(i.type!=n||!(i instanceof K)){t=1;break}t+=Kn(n,i)}Ta.set(e,t)}return t}function Ko(n,e,t,i,s,r,o,l,a){let h=0;for(let O=i;O<s;O++)h+=Kn(n,e[O]);let c=Math.ceil(h*1.5/8),f=[],u=[];function d(O,m,g,b,S){for(let w=g;w<b;){let Q=w,x=m[w],k=Kn(n,O[w]);for(w++;w<b;w++){let P=Kn(n,O[w]);if(k+P>=c)break;k+=P}if(w==Q+1){if(k>c){let P=O[Q];d(P.children,P.positions,0,P.children.length,m[Q]+S);continue}f.push(O[Q])}else{let P=m[w-1]+O[w-1].length-x;f.push(Ko(n,O,m,Q,w,x,P,null,a))}u.push(x+S-r)}}return d(e,t,i,s,0),(l||a)(f,u,o)}class Rf{constructor(){this.map=new WeakMap}setBuffer(e,t,i){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(t,i)}getBuffer(e,t){let i=this.map.get(e);return i&&i.get(t)}set(e,t){e instanceof it?this.setBuffer(e.context.buffer,e.index,t):e instanceof pe&&this.map.set(e.tree,t)}get(e){return e instanceof it?this.getBuffer(e.context.buffer,e.index):e instanceof pe?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class ft{constructor(e,t,i,s,r=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],i=!1){let s=[new ft(0,e.length,e,0,!1,i)];for(let r of t)r.to>e.length&&s.push(r);return s}static applyChanges(e,t,i=128){if(!t.length)return e;let s=[],r=1,o=e.length?e[0]:null;for(let l=0,a=0,h=0;;l++){let c=l<t.length?t[l]:null,f=c?c.fromA:1e9;if(f-a>=i)for(;o&&o.from<f;){let u=o;if(a>=u.from||f<=u.to||h){let d=Math.max(u.from,a)-h,O=Math.min(u.to,f)-h;u=d>=O?null:new ft(d,O,u.tree,u.offset+h,l>0,!!c)}if(u&&s.push(u),o.to>f)break;o=r<e.length?e[r++]:null}if(!c)break;a=c.toA,h=c.toA-c.toB}return s}}class Af{startParse(e,t,i){return typeof e=="string"&&(e=new sg(e)),i=i?i.length?i.map(s=>new Ee(s.from,s.to)):[new Ee(0,0)]:[new Ee(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){let s=this.startParse(e,t,i);for(;;){let r=s.advance();if(r)return r}}}class sg{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}}function rg(n){return(e,t,i,s)=>new lg(e,n,t,i,s)}class Ca{constructor(e,t,i,s,r){this.parser=e,this.parse=t,this.overlay=i,this.target=s,this.from=r}}function Ra(n){if(!n.length||n.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(n))}class og{constructor(e,t,i,s,r,o,l){this.parser=e,this.predicate=t,this.mounts=i,this.index=s,this.start=r,this.target=o,this.prev=l,this.depth=0,this.ranges=[]}}const bo=new M({perNode:!0});class lg{constructor(e,t,i,s,r){this.nest=t,this.input=i,this.fragments=s,this.ranges=r,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let i=this.baseParse.advance();if(!i)return null;if(this.baseParse=null,this.baseTree=i,this.startInner(),this.stoppedAt!=null)for(let s of this.inner)s.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let i=this.baseTree;return this.stoppedAt!=null&&(i=new K(i.type,i.children,i.positions,i.length,i.propValues.concat([[bo,this.stoppedAt]]))),i}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let i=Object.assign(Object.create(null),e.target.props);i[M.mounted.id]=new Ji(t,e.overlay,e.parser),e.target.props=i}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].from<e&&(e=Math.min(e,this.inner[t].parse.parsedPos));return e}stopAt(e){if(this.stoppedAt=e,this.baseParse)this.baseParse.stopAt(e);else for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].parse.stopAt(e)}startInner(){let e=new cg(this.fragments),t=null,i=null,s=new us(new pe(this.baseTree,this.ranges[0].from,0,null),I.IncludeAnonymous|I.IgnoreMounts);e:for(let r,o;;){let l=!0,a;if(this.stoppedAt!=null&&s.from>=this.stoppedAt)l=!1;else if(e.hasNode(s)){if(t){let h=t.mounts.find(c=>c.frag.from<=s.from&&c.frag.to>=s.to&&c.mount.overlay);if(h)for(let c of h.mount.overlay){let f=c.from+h.pos,u=c.to+h.pos;f>=s.from&&u<=s.to&&!t.ranges.some(d=>d.from<u&&d.to>f)&&t.ranges.push({from:f,to:u})}}l=!1}else if(i&&(o=ag(i.ranges,s.from,s.to)))l=o!=2;else if(!s.type.isAnonymous&&(r=this.nest(s,this.input))&&(s.from<s.to||!r.overlay)){s.tree||hg(s);let h=e.findMounts(s.from,r.parser);if(typeof r.overlay=="function")t=new og(r.parser,r.overlay,h,this.inner.length,s.from,s.tree,t);else{let c=Ma(this.ranges,r.overlay||(s.from<s.to?[new Ee(s.from,s.to)]:[]));c.length&&Ra(c),(c.length||!r.overlay)&&this.inner.push(new Ca(r.parser,c.length?r.parser.startParse(this.input,Wa(h,c),c):r.parser.startParse(""),r.overlay?r.overlay.map(f=>new Ee(f.from-s.from,f.to-s.from)):null,s.tree,c.length?c[0].from:s.from)),r.overlay?c.length&&(i={ranges:c,depth:0,prev:i}):l=!1}}else t&&(a=t.predicate(s))&&(a===!0&&(a=new Ee(s.from,s.to)),a.from<a.to&&t.ranges.push(a));if(l&&s.firstChild())t&&t.depth++,i&&i.depth++;else for(;!s.nextSibling();){if(!s.parent())break e;if(t&&!--t.depth){let h=Ma(this.ranges,t.ranges);h.length&&(Ra(h),this.inner.splice(t.index,0,new Ca(t.parser,t.parser.startParse(this.input,Wa(t.mounts,h),h),t.ranges.map(c=>new Ee(c.from-t.start,c.to-t.start)),t.target,h[0].from))),t=t.prev}i&&!--i.depth&&(i=i.prev)}}}}function ag(n,e,t){for(let i of n){if(i.from>=t)break;if(i.to>e)return i.from<=e&&i.to>=t?2:1}return 0}function Aa(n,e,t,i,s,r){if(e<t){let o=n.buffer[e+1];i.push(n.slice(e,t,o)),s.push(o-r)}}function hg(n){let{node:e}=n,t=[],i=e.context.buffer;do t.push(n.index),n.parent();while(!n.tree);let s=n.tree,r=s.children.indexOf(i),o=s.children[r],l=o.buffer,a=[r];function h(c,f,u,d,O,m){let g=t[m],b=[],S=[];Aa(o,c,g,b,S,d);let w=l[g+1],Q=l[g+2];a.push(b.length);let x=m?h(g+4,l[g+3],o.set.types[l[g]],w,Q-w,m-1):e.toTree();return b.push(x),S.push(w-d),Aa(o,l[g+3],f,b,S,d),new K(u,b,S,O)}s.children[r]=h(0,l.length,Se.none,0,o.length,t.length-1);for(let c of a){let f=n.tree.children[c],u=n.tree.positions[c];n.yield(new pe(f,u+n.from,c,n._tree))}}class Xa{constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(I.IncludeAnonymous|I.IgnoreMounts)}moveTo(e){let{cursor:t}=this,i=e-this.offset;for(;!this.done&&t.from<i;)t.to>=e&&t.enter(i,1,I.IgnoreOverlays|I.ExcludeBuffers)||t.next(!1)||(this.done=!0)}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof K)t=t.children[0];else break}return!1}}let cg=class{constructor(e){var t;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let i=this.curFrag=e[0];this.curTo=(t=i.tree.prop(bo))!==null&&t!==void 0?t:i.to,this.inner=new Xa(i.tree,-i.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let t=this.curFrag=this.fragments[this.fragI];this.curTo=(e=t.tree.prop(bo))!==null&&e!==void 0?e:t.to,this.inner=new Xa(t.tree,-t.offset)}}findMounts(e,t){var i;let s=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let r=this.inner.cursor.node;r;r=r.parent){let o=(i=r.tree)===null||i===void 0?void 0:i.prop(M.mounted);if(o&&o.parser==t)for(let l=this.fragI;l<this.fragments.length;l++){let a=this.fragments[l];if(a.from>=r.to)break;a.tree==this.curFrag.tree&&s.push({frag:a,pos:r.from-a.offset,mount:o})}}}return s}};function Ma(n,e){let t=null,i=e;for(let s=1,r=0;s<n.length;s++){let o=n[s-1].to,l=n[s].from;for(;r<i.length;r++){let a=i[r];if(a.from>=l)break;a.to<=o||(t||(i=t=e.slice()),a.from<o?(t[r]=new Ee(a.from,o),a.to>l&&t.splice(r+1,0,new Ee(l,a.to))):a.to>l?t[r--]=new Ee(l,a.to):t.splice(r--,1))}}return i}function fg(n,e,t,i){let s=0,r=0,o=!1,l=!1,a=-1e9,h=[];for(;;){let c=s==n.length?1e9:o?n[s].to:n[s].from,f=r==e.length?1e9:l?e[r].to:e[r].from;if(o!=l){let u=Math.max(a,t),d=Math.min(c,f,i);u<d&&h.push(new Ee(u,d))}if(a=Math.min(c,f),a==1e9)break;c==a&&(o?(o=!1,s++):o=!0),f==a&&(l?(l=!1,r++):l=!0)}return h}function Wa(n,e){let t=[];for(let{pos:i,mount:s,frag:r}of n){let o=i+(s.overlay?s.overlay[0].from:0),l=o+s.tree.length,a=Math.max(r.from,o),h=Math.min(r.to,l);if(s.overlay){let c=s.overlay.map(u=>new Ee(u.from+i,u.to+i)),f=fg(e,c,a,h);for(let u=0,d=a;;u++){let O=u==f.length,m=O?h:f[u].from;if(m>d&&t.push(new ft(d,m,s.tree,-o,r.from>=d||r.openStart,r.to<=m||r.openEnd)),O)break;d=f[u].to}}else t.push(new ft(a,h,s.tree,-o,r.from>=o||r.openStart,r.to<=l||r.openEnd))}return t}let ug=0;class Je{constructor(e,t,i){this.set=e,this.base=t,this.modified=i,this.id=ug++}static define(e){if(e!=null&&e.base)throw new Error("Can not derive from a modified tag");let t=new Je([],null,[]);if(t.set.push(t),e)for(let i of e.set)t.set.push(i);return t}static defineModifier(){let e=new ds;return t=>t.modified.indexOf(e)>-1?t:ds.get(t.base||t,t.modified.concat(e).sort((i,s)=>i.id-s.id))}}let dg=0;class ds{constructor(){this.instances=[],this.id=dg++}static get(e,t){if(!t.length)return e;let i=t[0].instances.find(l=>l.base==e&&Og(t,l.modified));if(i)return i;let s=[],r=new Je(s,e,t);for(let l of t)l.instances.push(r);let o=pg(t);for(let l of e.set)if(!l.modified.length)for(let a of o)s.push(ds.get(l,a));return r}}function Og(n,e){return n.length==e.length&&n.every((t,i)=>t==e[i])}function pg(n){let e=[[]];for(let t=0;t<n.length;t++)for(let i=0,s=e.length;i<s;i++)e.push(e[i].concat(n[t]));return e.sort((t,i)=>i.length-t.length)}function Vs(n){let e=Object.create(null);for(let t in n){let i=n[t];Array.isArray(i)||(i=[i]);for(let s of t.split(" "))if(s){let r=[],o=2,l=s;for(let f=0;;){if(l=="..."&&f>0&&f+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),f+=u[0].length,f==s.length)break;let d=s[f++];if(f==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(f)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let c=new Os(i,o,a>0?r.slice(0,a):null);e[h]=c.sort(e[h])}}return Xf.add(e)}const Xf=new M;class Os{constructor(e,t,i,s){this.tags=e,this.mode=t,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}}Os.empty=new Os([],2,null);function Mf(n,e){let t=Object.create(null);for(let r of n)if(!Array.isArray(r.tag))t[r.tag.id]=r.class;else for(let o of r.tag)t[o.id]=r.class;let{scope:i,all:s=null}=e||{};return{style:r=>{let o=s;for(let l of r)for(let a of l.set){let h=t[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function mg(n,e){let t=null;for(let i of n){let s=i.style(e);s&&(t=t?t+" "+s:s)}return t}function gg(n,e,t,i=0,s=n.length){let r=new bg(i,Array.isArray(e)?e:[e],t);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}class bg{constructor(e,t,i){this.at=e,this.highlighters=t,this.span=i,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,i,s,r){let{type:o,from:l,to:a}=e;if(l>=i||a<=t)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,c=yg(e)||Os.empty,f=mg(r,c.tags);if(f&&(h&&(h+=" "),h+=f,c.mode==1&&(s+=(s?" ":"")+f)),this.startSpan(Math.max(t,l),h),c.opaque)return;let u=e.tree&&e.tree.prop(M.mounted);if(u&&u.overlay){let d=e.node.enter(u.overlay[0].from+l,1),O=this.highlighters.filter(g=>!g.scope||g.scope(u.tree.type)),m=e.firstChild();for(let g=0,b=l;;g++){let S=g<u.overlay.length?u.overlay[g]:null,w=S?S.from+l:a,Q=Math.max(t,b),x=Math.min(i,w);if(Q<x&&m)for(;e.from<x&&(this.highlightRange(e,Q,x,s,r),this.startSpan(Math.min(x,e.to),h),!(e.to>=w||!e.nextSibling())););if(!S||w>i)break;b=S.to+l,b>t&&(this.highlightRange(d.cursor(),Math.max(t,S.from+l),Math.min(i,b),"",O),this.startSpan(Math.min(i,b),h))}m&&e.parent()}else if(e.firstChild()){u&&(s="");do if(!(e.to<=t)){if(e.from>=i)break;this.highlightRange(e,t,i,s,r),this.startSpan(Math.min(i,e.to),h)}while(e.nextSibling());e.parent()}}}function yg(n){let e=n.type.prop(Xf);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}const $=Je.define,Mn=$(),bt=$(),Ya=$(bt),qa=$(bt),yt=$(),Wn=$(yt),hr=$(yt),Ke=$(),Yt=$(Ke),Fe=$(),He=$(),yo=$(),ki=$(yo),Yn=$(),p={comment:Mn,lineComment:$(Mn),blockComment:$(Mn),docComment:$(Mn),name:bt,variableName:$(bt),typeName:Ya,tagName:$(Ya),propertyName:qa,attributeName:$(qa),className:$(bt),labelName:$(bt),namespace:$(bt),macroName:$(bt),literal:yt,string:Wn,docString:$(Wn),character:$(Wn),attributeValue:$(Wn),number:hr,integer:$(hr),float:$(hr),bool:$(yt),regexp:$(yt),escape:$(yt),color:$(yt),url:$(yt),keyword:Fe,self:$(Fe),null:$(Fe),atom:$(Fe),unit:$(Fe),modifier:$(Fe),operatorKeyword:$(Fe),controlKeyword:$(Fe),definitionKeyword:$(Fe),moduleKeyword:$(Fe),operator:He,derefOperator:$(He),arithmeticOperator:$(He),logicOperator:$(He),bitwiseOperator:$(He),compareOperator:$(He),updateOperator:$(He),definitionOperator:$(He),typeOperator:$(He),controlOperator:$(He),punctuation:yo,separator:$(yo),bracket:ki,angleBracket:$(ki),squareBracket:$(ki),paren:$(ki),brace:$(ki),content:Ke,heading:Yt,heading1:$(Yt),heading2:$(Yt),heading3:$(Yt),heading4:$(Yt),heading5:$(Yt),heading6:$(Yt),contentSeparator:$(Ke),list:$(Ke),quote:$(Ke),emphasis:$(Ke),strong:$(Ke),link:$(Ke),monospace:$(Ke),strikethrough:$(Ke),inserted:$(),deleted:$(),changed:$(),invalid:$(),meta:Yn,documentMeta:$(Yn),annotation:$(Yn),processingInstruction:$(Yn),definition:Je.defineModifier(),constant:Je.defineModifier(),function:Je.defineModifier(),standard:Je.defineModifier(),local:Je.defineModifier(),special:Je.defineModifier()};Mf([{tag:p.link,class:"tok-link"},{tag:p.heading,class:"tok-heading"},{tag:p.emphasis,class:"tok-emphasis"},{tag:p.strong,class:"tok-strong"},{tag:p.keyword,class:"tok-keyword"},{tag:p.atom,class:"tok-atom"},{tag:p.bool,class:"tok-bool"},{tag:p.url,class:"tok-url"},{tag:p.labelName,class:"tok-labelName"},{tag:p.inserted,class:"tok-inserted"},{tag:p.deleted,class:"tok-deleted"},{tag:p.literal,class:"tok-literal"},{tag:p.string,class:"tok-string"},{tag:p.number,class:"tok-number"},{tag:[p.regexp,p.escape,p.special(p.string)],class:"tok-string2"},{tag:p.variableName,class:"tok-variableName"},{tag:p.local(p.variableName),class:"tok-variableName tok-local"},{tag:p.definition(p.variableName),class:"tok-variableName tok-definition"},{tag:p.special(p.variableName),class:"tok-variableName2"},{tag:p.definition(p.propertyName),class:"tok-propertyName tok-definition"},{tag:p.typeName,class:"tok-typeName"},{tag:p.namespace,class:"tok-namespace"},{tag:p.className,class:"tok-className"},{tag:p.macroName,class:"tok-macroName"},{tag:p.propertyName,class:"tok-propertyName"},{tag:p.operator,class:"tok-operator"},{tag:p.comment,class:"tok-comment"},{tag:p.meta,class:"tok-meta"},{tag:p.invalid,class:"tok-invalid"},{tag:p.punctuation,class:"tok-punctuation"}]);var cr;const Jt=new M;function Wf(n){return T.define({combine:n?e=>e.concat(n):void 0})}const Jo=new M;class Ue{constructor(e,t,i=[],s=""){this.data=e,this.name=s,D.prototype.hasOwnProperty("tree")||Object.defineProperty(D.prototype,"tree",{get(){return J(this)}}),this.parser=t,this.extension=[At.of(this),D.languageData.of((r,o,l)=>{let a=Ea(r,o,l),h=a.type.prop(Jt);if(!h)return[];let c=r.facet(h),f=a.type.prop(Jo);if(f){let u=a.resolve(o-a.from,l);for(let d of f)if(d.test(u,r)){let O=r.facet(d.facet);return d.type=="replace"?O:O.concat(c)}}return c})].concat(i)}isActiveAt(e,t,i=-1){return Ea(e,t,i).type.prop(Jt)==this.data}findRegions(e){let t=e.facet(At);if((t==null?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Jt)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(M.mounted);if(l){if(l.tree.prop(Jt)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a<r.children.length;a++){let h=r.children[a];h instanceof K&&s(h,r.positions[a]+o)}};return s(J(e),0),i}get allowsNesting(){return!0}}Ue.setState=A.define();function Ea(n,e,t){let i=n.facet(At),s=J(n).topNode;if(!i||i.allowsNesting)for(let r=s;r;r=r.enter(e,t,I.ExcludeBuffers))r.type.isTop&&(s=r);return s}class ui extends Ue{constructor(e,t,i){super(e,t,[],i),this.parser=t}static define(e){let t=Wf(e.languageData);return new ui(t,e.parser.configure({props:[Jt.add(i=>i.isTop?t:void 0)]}),e.name)}configure(e,t){return new ui(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function J(n){let e=n.field(Ue.state,!1);return e?e.tree:K.empty}class Sg{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let i=this.cursorPos-this.string.length;return e<i||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-i,t-i)}}let vi=null;class ps{constructor(e,t,i=[],s,r,o,l,a){this.parser=e,this.state=t,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,i){return new ps(e,t,[],K.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Sg(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=K.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let s=this.parse.advance();if(s)if(this.fragments=this.withoutTempSkipped(ft.addTree(s,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(i=this.parse.stoppedAt)!==null&&i!==void 0?i:this.state.doc.length,this.tree=s,this.parse=null,this.treeLen<(t??this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(ft.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=vi;vi=this;try{return e()}finally{vi=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=Va(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((h,c,f,u)=>a.push({fromA:h,toA:c,fromB:f,toB:u})),i=ft.applyChanges(i,a),s=K.empty,r=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let c=e.mapPos(h.from,1),f=e.mapPos(h.to,-1);c<f&&l.push({from:c,to:f})}}}return new ps(this.parser,t,i,s,r,o,l,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let i=0;i<this.skipped.length;i++){let{from:s,to:r}=this.skipped[i];s<e.to&&r>e.from&&(this.fragments=Va(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Af{createParse(t,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=vi;if(a){for(let h of s)a.tempSkipped.push(h);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new K(Se.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return vi}}function Va(n,e,t){return ft.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}class di{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,i)||t.takeTree(),new di(t)}static init(e){let t=Math.min(3e3,e.doc.length),i=ps.create(e.facet(At).parser,e,{from:0,to:t});return i.work(20,t)||i.takeTree(),new di(i)}}Ue.state=oe.define({create:di.init,update(n,e){for(let t of e.effects)if(t.is(Ue.setState))return t.value;return e.startState.facet(At)!=e.state.facet(At)?di.init(e.state):n.apply(e)}});let Yf=n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Yf=n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});const fr=typeof navigator<"u"&&(!((cr=navigator.scheduling)===null||cr===void 0)&&cr.isInputPending)?()=>navigator.scheduling.isInputPending():null,xg=ne.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(Ue.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(Ue.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Yf(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:i,viewport:{to:s}}=this.view,r=i.field(Ue.state);if(r.tree==r.context.tree&&r.context.isDone(s+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,e&&!fr?Math.max(25,e.timeRemaining()-5):1e9),l=r.context.treeLen<s&&i.doc.length>s+1e3,a=r.context.work(()=>fr&&fr()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:Ue.setState.of(new di(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>ke(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),At=T.define({combine(n){return n.length?n[0]:null},enables:n=>[Ue.state,xg,v.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})]});class el{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}}const Qg=T.define(),_s=T.define({combine:n=>{if(!n.length)return"  ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e}});function ms(n){let e=n.facet(_s);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}function tn(n,e){let t="",i=n.tabSize,s=n.facet(_s)[0];if(s=="	"){for(;e>=i;)t+="	",e-=i;s=" "}for(let r=0;r<e;r++)t+=s;return t}function tl(n,e){n instanceof D&&(n=new Ds(n));for(let i of n.state.facet(Qg)){let s=i(n,e);if(s!==void 0)return s}let t=J(n.state);return t.length>=e?wg(n,t,e):null}class Ds{constructor(e,t={}){this.state=e,this.options=t,this.unit=ms(e)}lineAt(e,t=1){let i=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==e?{text:"",from:e}:(t<0?s<e:s<=e)?{text:i.text.slice(s-i.from),from:s}:{text:i.text.slice(0,s-i.from),from:i.from}:i}textAfterPos(e,t=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:i,from:s}=this.lineAt(e,t);return i.slice(e-s,Math.min(i.length,e+100-s))}column(e,t=1){let{text:i,from:s}=this.lineAt(e,t),r=this.countColumn(i,e-s),o=this.options.overrideIndentation?this.options.overrideIndentation(s):-1;return o>-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(e,t=e.length){return yi(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:i,from:s}=this.lineAt(e,t),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const zs=new M;function wg(n,e,t){let i=e.resolveStack(t),s=i.node.enterUnfinishedNodesBefore(t);if(s!=i.node){let r=[];for(let o=s;o!=i.node;o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return qf(i,n,t)}function qf(n,e,t){for(let i=n;i;i=i.next){let s=Pg(i.node);if(s)return s(il.create(e,t,i))}return 0}function $g(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function Pg(n){let e=n.type.prop(zs);if(e)return e;let t=n.firstChild,i;if(t&&(i=t.type.prop(M.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>Ef(o,!0,1,void 0,r&&!$g(o)?s.from:void 0)}return n.parent==null?kg:null}function kg(){return 0}class il extends Ds{constructor(e,t,i){super(e.state,e.options),this.base=e,this.pos=t,this.context=i}get node(){return this.context.node}static create(e,t,i){return new il(e,t,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let i=e.resolve(t.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(vg(i,e))break;t=this.state.doc.lineAt(i.from)}return this.lineIndent(t.from)}continue(){return qf(this.context.next,this.base,this.pos)}}function vg(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}function Zg(n){let e=n.node,t=e.childAfter(e.from),i=e.lastChild;if(!t)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(t.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=t.to;;){let a=e.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped)return a.from<o?t:null;l=a.to}}function Tg({closing:n,align:e=!0,units:t=1}){return i=>Ef(i,e,t,n)}function Ef(n,e,t,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=e?Zg(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*t)}const Cg=n=>n.baseIndent;function Jn({except:n,units:e=1}={}){return t=>{let i=n&&n.test(t.textAfter);return t.baseIndent+(i?0:e*t.unit)}}const Rg=200;function Ag(){return D.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let e=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!e.length)return n;let t=n.newDoc,{head:i}=n.newSelection.main,s=t.lineAt(i);if(i>s.from+Rg)return n;let r=t.sliceString(s.from,i);if(!e.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let c=o.doc.lineAt(h);if(c.from==l)continue;l=c.from;let f=tl(o,c.from);if(f==null)continue;let u=/^\s*/.exec(c.text)[0],d=tn(o,f);u!=d&&a.push({from:c.from,to:c.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}const Xg=T.define(),Us=new M;function Vf(n){let e=n.firstChild,t=n.lastChild;return e&&e.to<t.from?{from:e.to,to:t.type.isError?n.to:t.from}:null}function Mg(n,e,t){let i=J(n);if(i.length<t)return null;let s=i.resolveStack(t,1),r=null;for(let o=s;o;o=o.next){let l=o.node;if(l.to<=t||l.from>t)continue;if(r&&l.from<e)break;let a=l.type.prop(Us);if(a&&(l.to<i.length-50||i.length==n.doc.length||!Wg(l))){let h=a(l,n);h&&h.from<=t&&h.from>=e&&h.to>t&&(r=h)}}return r}function Wg(n){let e=n.lastChild;return e&&e.to==n.to&&e.type.isError}function gs(n,e,t){for(let i of n.facet(Xg)){let s=i(n,e,t);if(s)return s}return Mg(n,e,t)}function _f(n,e){let t=e.mapPos(n.from,1),i=e.mapPos(n.to,-1);return t>=i?void 0:{from:t,to:i}}const js=A.define({map:_f}),On=A.define({map:_f});function Df(n){let e=[];for(let{head:t}of n.state.selection.ranges)e.some(i=>i.from<=t&&i.to>=t)||e.push(n.lineBlockAt(t));return e}const Bt=oe.define({create(){return R.none},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(js)&&!Yg(n,t.value.from,t.value.to)){let{preparePlaceholder:i}=e.state.facet(jf),s=i?R.replace({widget:new Ug(i(e.state,t.value))}):_a;n=n.update({add:[s.range(t.value.from,t.value.to)]})}else t.is(On)&&(n=n.update({filter:(i,s)=>t.value.from!=i||t.value.to!=s,filterFrom:t.value.from,filterTo:t.value.to}));if(e.selection){let t=!1,{head:i}=e.selection.main;n.between(i,i,(s,r)=>{s<i&&r>i&&(t=!0)}),t&&(n=n.update({filterFrom:i,filterTo:i,filter:(s,r)=>r<=i||s>=i}))}return n},provide:n=>v.decorations.from(n),toJSON(n,e){let t=[];return n.between(0,e.doc.length,(i,s)=>{t.push(i,s)}),t},fromJSON(n){if(!Array.isArray(n)||n.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t<n.length;){let i=n[t++],s=n[t++];if(typeof i!="number"||typeof s!="number")throw new RangeError("Invalid JSON for fold state");e.push(_a.range(i,s))}return R.set(e,!0)}});function bs(n,e,t){var i;let s=null;return(i=n.field(Bt,!1))===null||i===void 0||i.between(e,t,(r,o)=>{(!s||s.from>r)&&(s={from:r,to:o})}),s}function Yg(n,e,t){let i=!1;return n.between(e,e,(s,r)=>{s==e&&r==t&&(i=!0)}),i}function zf(n,e){return n.field(Bt,!1)?e:e.concat(A.appendConfig.of(Bf()))}const qg=n=>{for(let e of Df(n)){let t=gs(n.state,e.from,e.to);if(t)return n.dispatch({effects:zf(n.state,[js.of(t),Uf(n,t)])}),!0}return!1},Eg=n=>{if(!n.state.field(Bt,!1))return!1;let e=[];for(let t of Df(n)){let i=bs(n.state,t.from,t.to);i&&e.push(On.of(i),Uf(n,i,!1))}return e.length&&n.dispatch({effects:e}),e.length>0};function Uf(n,e,t=!0){let i=n.state.doc.lineAt(e.from).number,s=n.state.doc.lineAt(e.to).number;return v.announce.of(`${n.state.phrase(t?"Folded lines":"Unfolded lines")} ${i} ${n.state.phrase("to")} ${s}.`)}const Vg=n=>{let{state:e}=n,t=[];for(let i=0;i<e.doc.length;){let s=n.lineBlockAt(i),r=gs(e,s.from,s.to);r&&t.push(js.of(r)),i=(r?n.lineBlockAt(r.to):s).to+1}return t.length&&n.dispatch({effects:zf(n.state,t)}),!!t.length},_g=n=>{let e=n.state.field(Bt,!1);if(!e||!e.size)return!1;let t=[];return e.between(0,n.state.doc.length,(i,s)=>{t.push(On.of({from:i,to:s}))}),n.dispatch({effects:t}),!0},Dg=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:qg},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:Eg},{key:"Ctrl-Alt-[",run:Vg},{key:"Ctrl-Alt-]",run:_g}],zg={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},jf=T.define({combine(n){return lt(n,zg)}});function Bf(n){return[Bt,Ng]}function Nf(n,e){let{state:t}=n,i=t.facet(jf),s=o=>{let l=n.lineBlockAt(n.posAtDOM(o.target)),a=bs(n.state,l.from,l.to);a&&n.dispatch({effects:On.of(a)}),o.preventDefault()};if(i.placeholderDOM)return i.placeholderDOM(n,s,e);let r=document.createElement("span");return r.textContent=i.placeholderText,r.setAttribute("aria-label",t.phrase("folded code")),r.title=t.phrase("unfold"),r.className="cm-foldPlaceholder",r.onclick=s,r}const _a=R.replace({widget:new class extends mt{toDOM(n){return Nf(n,null)}}});class Ug extends mt{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Nf(e,this.value)}}const jg={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class ur extends Ot{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}}function Bg(n={}){let e=Object.assign(Object.assign({},jg),n),t=new ur(e,!0),i=new ur(e,!1),s=ne.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(At)!=o.state.facet(At)||o.startState.field(Bt,!1)!=o.state.field(Bt,!1)||J(o.startState)!=J(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let l=new vt;for(let a of o.viewportLineBlocks){let h=bs(o.state,a.from,a.to)?i:gs(o.state,a.from,a.to)?t:null;h&&l.add(a.from,a.from,h)}return l.finish()}}),{domEventHandlers:r}=e;return[s,zm({class:"cm-foldGutter",markers(o){var l;return((l=o.plugin(s))===null||l===void 0?void 0:l.markers)||V.empty},initialSpacer(){return new ur(e,!1)},domEventHandlers:Object.assign(Object.assign({},r),{click:(o,l,a)=>{if(r.click&&r.click(o,l,a))return!0;let h=bs(o.state,l.from,l.to);if(h)return o.dispatch({effects:On.of(h)}),!0;let c=gs(o.state,l.from,l.to);return c?(o.dispatch({effects:js.of(c)}),!0):!1}})}),Bf()]}const Ng=v.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class pn{constructor(e,t){this.specs=e;let i;function s(l){let a=Zt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}const r=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,o=t.scope;this.scope=o instanceof Ue?l=>l.prop(Jt)==o.data:o?l=>l==o:void 0,this.style=Mf(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new Zt(i):null,this.themeType=t.themeType}static define(e,t){return new pn(e,t||{})}}const So=T.define(),If=T.define({combine(n){return n.length?[n[0]]:null}});function dr(n){let e=n.facet(So);return e.length?e:n.facet(If)}function nl(n,e){let t=[Gg],i;return n instanceof pn&&(n.module&&t.push(v.styleModule.of(n.module)),i=n.themeType),e!=null&&e.fallback?t.push(If.of(n)):i?t.push(So.computeN([v.darkTheme],s=>s.facet(v.darkTheme)==(i=="dark")?[n]:[])):t.push(So.of(n)),t}class Ig{constructor(e){this.markCache=Object.create(null),this.tree=J(e.state),this.decorations=this.buildDeco(e,dr(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=J(e.state),i=dr(e.state),s=i!=dr(e.startState),{viewport:r}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length<r.to&&!s&&t.type==this.tree.type&&o>=r.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||s)&&(this.tree=t,this.decorations=this.buildDeco(e.view,i),this.decoratedTo=r.to)}buildDeco(e,t){if(!t||!this.tree.length)return R.none;let i=new vt;for(let{from:s,to:r}of e.visibleRanges)gg(this.tree,t,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=R.mark({class:a})))},s,r);return i.finish()}}const Gg=Xt.high(ne.fromClass(Ig,{decorations:n=>n.decorations})),Gf=pn.define([{tag:p.meta,color:"#404740"},{tag:p.link,textDecoration:"underline"},{tag:p.heading,textDecoration:"underline",fontWeight:"bold"},{tag:p.emphasis,fontStyle:"italic"},{tag:p.strong,fontWeight:"bold"},{tag:p.strikethrough,textDecoration:"line-through"},{tag:p.keyword,color:"#708"},{tag:[p.atom,p.bool,p.url,p.contentSeparator,p.labelName],color:"#219"},{tag:[p.literal,p.inserted],color:"#164"},{tag:[p.string,p.deleted],color:"#a11"},{tag:[p.regexp,p.escape,p.special(p.string)],color:"#e40"},{tag:p.definition(p.variableName),color:"#00f"},{tag:p.local(p.variableName),color:"#30a"},{tag:[p.typeName,p.namespace],color:"#085"},{tag:p.className,color:"#167"},{tag:[p.special(p.variableName),p.macroName],color:"#256"},{tag:p.definition(p.propertyName),color:"#00c"},{tag:p.comment,color:"#940"},{tag:p.invalid,color:"#f00"}]),Lg=v.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Lf=1e4,Ff="()[]{}",Hf=T.define({combine(n){return lt(n,{afterCursor:!0,brackets:Ff,maxScanDistance:Lf,renderMatch:Kg})}}),Fg=R.mark({class:"cm-matchingBracket"}),Hg=R.mark({class:"cm-nonmatchingBracket"});function Kg(n){let e=[],t=n.matched?Fg:Hg;return e.push(t.range(n.start.from,n.start.to)),n.end&&e.push(t.range(n.end.from,n.end.to)),e}const Jg=oe.define({create(){return R.none},update(n,e){if(!e.docChanged&&!e.selection)return n;let t=[],i=e.state.facet(Hf);for(let s of e.state.selection.ranges){if(!s.empty)continue;let r=nt(e.state,s.head,-1,i)||s.head>0&&nt(e.state,s.head-1,1,i)||i.afterCursor&&(nt(e.state,s.head,1,i)||s.head<e.state.doc.length&&nt(e.state,s.head+1,-1,i));r&&(t=t.concat(i.renderMatch(r,e.state)))}return R.set(t,!0)},provide:n=>v.decorations.from(n)}),e0=[Jg,Lg];function t0(n={}){return[Hf.of(n),e0]}const Kf=new M;function xo(n,e,t){let i=n.prop(e<0?M.openedBy:M.closedBy);if(i)return i;if(n.name.length==1){let s=t.indexOf(n.name);if(s>-1&&s%2==(e<0?1:0))return[t[s+e]]}return null}function Qo(n){let e=n.type.prop(Kf);return e?e(n.node):n}function nt(n,e,t,i={}){let s=i.maxScanDistance||Lf,r=i.brackets||Ff,o=J(n),l=o.resolveInner(e,t);for(let a=l;a;a=a.parent){let h=xo(a.type,t,r);if(h&&a.from<a.to){let c=Qo(a);if(c&&(t>0?e>=c.from&&e<c.to:e>c.from&&e<=c.to))return i0(n,e,t,a,c,h,r)}}return n0(n,e,t,o,l.type,s,r)}function i0(n,e,t,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,c=l==null?void 0:l.cursor();if(c&&(t<0?c.childBefore(i.from):c.childAfter(i.to)))do if(t<0?c.to<=i.from:c.from>=i.to){if(h==0&&r.indexOf(c.type.name)>-1&&c.from<c.to){let f=Qo(c);return{start:a,end:f?{from:f.from,to:f.to}:void 0,matched:!0}}else if(xo(c.type,t,o))h++;else if(xo(c.type,-t,o)){if(h==0){let f=Qo(c);return{start:a,end:f&&f.from<f.to?{from:f.from,to:f.to}:void 0,matched:!1}}h--}}while(t<0?c.prevSibling():c.nextSibling());return{start:a,matched:!1}}function n0(n,e,t,i,s,r,o){let l=t<0?n.sliceDoc(e-1,e):n.sliceDoc(e,e+1),a=o.indexOf(l);if(a<0||a%2==0!=t>0)return null;let h={from:t<0?e-1:e,to:t>0?e+1:e},c=n.doc.iterRange(e,t>0?n.doc.length:0),f=0;for(let u=0;!c.next().done&&u<=r;){let d=c.value;t<0&&(u+=d.length);let O=e+u*t;for(let m=t>0?0:d.length-1,g=t>0?d.length:-1;m!=g;m+=t){let b=o.indexOf(d[m]);if(!(b<0||i.resolveInner(O+m,1).type!=s))if(b%2==0==t>0)f++;else{if(f==1)return{start:h,end:{from:O+m,to:O+m+1},matched:b>>1==a>>1};f--}}t>0&&(u+=d.length)}return c.done?{start:h,matched:!1}:null}const s0=Object.create(null),Da=[Se.none],za=[],Ua=Object.create(null),r0=Object.create(null);for(let[n,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])r0[n]=o0(s0,e);function Or(n,e){za.indexOf(n)>-1||(za.push(n),console.warn(e))}function o0(n,e){let t=[];for(let l of e.split(" ")){let a=[];for(let h of l.split(".")){let c=n[h]||p[h];c?typeof c=="function"?a.length?a=a.map(c):Or(h,`Modifier ${h} used at start of tag`):a.length?Or(h,`Tag ${h} used as modifier`):a=Array.isArray(c)?c:[c]:Or(h,`Unknown highlighting tag ${h}`)}for(let h of a)t.push(h)}if(!t.length)return 0;let i=e.replace(/ /g,"_"),s=i+" "+t.map(l=>l.id),r=Ua[s];if(r)return r.id;let o=Ua[s]=Se.define({id:Da.length,name:i,props:[Vs({[i]:t})]});return Da.push(o),o.id}L.RTL,L.LTR;const l0="#e5c07b",ja="#e06c75",a0="#56b6c2",h0="#ffffff",es="#abb2bf",wo="#7d8799",c0="#61afef",f0="#98c379",Ba="#d19a66",u0="#c678dd",d0="#21252b",Na="#2c313a",Ia="#282c34",pr="#353a42",O0="#3E4451",Ga="#528bff",p0=v.theme({"&":{color:es,backgroundColor:Ia},".cm-content":{caretColor:Ga},".cm-cursor, .cm-dropCursor":{borderLeftColor:Ga},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:O0},".cm-panels":{backgroundColor:d0,color:es},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Ia,color:wo,border:"none"},".cm-activeLineGutter":{backgroundColor:Na},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:pr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:pr,borderBottomColor:pr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Na,color:es}}},{dark:!0}),m0=pn.define([{tag:p.keyword,color:u0},{tag:[p.name,p.deleted,p.character,p.propertyName,p.macroName],color:ja},{tag:[p.function(p.variableName),p.labelName],color:c0},{tag:[p.color,p.constant(p.name),p.standard(p.name)],color:Ba},{tag:[p.definition(p.name),p.separator],color:es},{tag:[p.typeName,p.className,p.number,p.changed,p.annotation,p.modifier,p.self,p.namespace],color:l0},{tag:[p.operator,p.operatorKeyword,p.url,p.escape,p.regexp,p.link,p.special(p.string)],color:a0},{tag:[p.meta,p.comment],color:wo},{tag:p.strong,fontWeight:"bold"},{tag:p.emphasis,fontStyle:"italic"},{tag:p.strikethrough,textDecoration:"line-through"},{tag:p.link,color:wo,textDecoration:"underline"},{tag:p.heading,fontWeight:"bold",color:ja},{tag:[p.atom,p.bool,p.special(p.variableName)],color:Ba},{tag:[p.processingInstruction,p.string,p.inserted],color:f0},{tag:p.invalid,color:h0}]),Ex=[p0,nl(m0)];var La={};class ys{constructor(e,t,i,s,r,o,l,a,h,c=0,f){this.p=e,this.stack=t,this.state=i,this.reducePos=s,this.pos=r,this.score=o,this.buffer=l,this.bufferBase=a,this.curContext=h,this.lookAhead=c,this.parent=f}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,i=0){let s=e.parser.context;return new ys(e,[],t,i,i,0,[],0,s?new Fa(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let i=e>>19,s=e&65535,{parser:r}=this.p;this.reducePos<this.pos-25&&this.setLookAhead(this.pos);let o=r.dynamicPrecedence(s);if(o&&(this.score+=o),i==0){this.pushState(r.getGoto(this.state,s,!0),this.reducePos),s<r.minRepeatTerm&&this.storeNode(s,this.reducePos,this.reducePos,4,!0),this.reduceContext(s,this.reducePos);return}let l=this.stack.length-(i-1)*3-(e&262144?6:0),a=l?this.stack[l-2]:this.p.ranges[0].from,h=this.reducePos-a;h>=2e3&&!(!((t=this.p.parser.nodeSet.types[s])===null||t===void 0)&&t.isAnonymous)&&(a==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSize<h&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=a,this.p.lastBigReductionSize=h));let c=l?this.stack[l-1]:0,f=this.bufferBase+this.buffer.length-c;if(s<r.minRepeatTerm||e&131072){let u=r.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(s,a,u,f+4,!0)}if(e&262144)this.state=this.stack[l];else{let u=this.stack[l-3];this.state=r.getGoto(u,s,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(s,a)}storeNode(e,t,i,s=4,r=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this,l=this.buffer.length;if(l==0&&o.parent&&(l=o.bufferBase-o.parent.bufferBase,o=o.parent),l>0&&o.buffer[l-4]==0&&o.buffer[l-1]>-1){if(t==i)return;if(o.buffer[l-2]>=t){o.buffer[l-2]=i;return}}}if(!r||this.pos==i)this.buffer.push(e,t,i,s);else{let o=this.buffer.length;if(o>0&&this.buffer[o-4]!=0)for(;o>0&&this.buffer[o-2]>i;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,s>4&&(s-=4);this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=i,this.buffer[o+3]=s}}shift(e,t,i,s){if(e&131072)this.pushState(e&65535,this.pos);else if(e&262144)this.pos=s,this.shiftContext(t,i),t<=this.p.parser.maxNode&&this.buffer.push(t,i,s,4);else{let r=e,{parser:o}=this.p;(s>this.pos||t<=o.maxNode)&&(this.pos=s,o.stateFlag(r,1)||(this.reducePos=s)),this.pushState(r,i),this.shiftContext(t,i),t<=o.maxNode&&this.buffer.push(t,i,s,4)}}apply(e,t,i,s){e&65536?this.reduce(e):this.shift(e,t,i,s)}useNode(e,t){let i=this.p.reused.length-1;(i<0||this.p.reused[i]!=e)&&(this.p.reused.push(e),i++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(t,s),this.buffer.push(i,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let i=e.buffer.slice(t),s=e.bufferBase+t;for(;e&&s==e.bufferBase;)e=e.parent;return new ys(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,i,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let i=e<=this.p.parser.maxNode;i&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,i?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new g0(this);;){let i=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(i==0)return!1;if(!(i&65536))return!0;t.reduce(i)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>8||this.stack.length>=120){let s=[];for(let r=0,o;r<t.length;r+=2)(o=t[r+1])!=this.state&&this.p.parser.hasAction(o,e)&&s.push(t[r],o);if(this.stack.length<120)for(let r=0;s.length<8&&r<t.length;r+=2){let o=t[r+1];s.some((l,a)=>a&1&&l==o)||s.push(t[r],o)}t=s}let i=[];for(let s=0;s<t.length&&i.length<4;s+=2){let r=t[s+1];if(r==this.state)continue;let o=this.split();o.pushState(r,this.pos),o.storeNode(0,o.pos,o.pos,4,!0),o.shiftContext(t[s],this.pos),o.reducePos=this.pos,o.score-=200,i.push(o)}return i}forceReduce(){let{parser:e}=this.p,t=e.stateSlot(this.state,5);if(!(t&65536))return!1;if(!e.validAction(this.state,t)){let i=t>>19,s=t&65535,r=this.stack.length-i*3;if(r<0||e.getGoto(this.stack[r],s,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;t=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let{parser:e}=this.p,t=[],i=(s,r)=>{if(!t.includes(s))return t.push(s),e.allActions(s,o=>{if(!(o&393216))if(o&65536){let l=(o>>19)-r;if(l>1){let a=o&65535,h=this.stack.length-l*3;if(h>=0&&e.getGoto(this.stack[h],a,!1)>=0)return l<<19|65536|a}}else{let l=i(o,r+1);if(l!=null)return l}})};return i(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t<this.stack.length;t+=3)if(this.stack[t]!=e.stack[t])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){if(e!=this.curContext.context){let t=new Fa(this.curContext.tracker,e);t.hash!=this.curContext.hash&&this.emitContext(),this.curContext=t}}setLookAhead(e){e>this.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class Fa{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}}class g0{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,i=e>>19;i==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(i-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=s}}class Ss{constructor(e,t,i){this.stack=e,this.pos=t,this.index=i,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new Ss(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new Ss(this.stack,this.pos,this.index)}}function Yi(n,e=Uint16Array){if(typeof n!="string")return n;let t=null;for(let i=0,s=0;i<n.length;){let r=0;for(;;){let o=n.charCodeAt(i++),l=!1;if(o==126){r=65535;break}o>=92&&o--,o>=34&&o--;let a=o-32;if(a>=46&&(a-=46,l=!0),r+=a,l)break;r*=46}t?t[s++]=r:t=new e(r)}return t}class ts{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const Ha=new ts;class b0{constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=Ha,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let i=this.range,s=this.rangeIndex,r=this.pos+e;for(;r<i.from;){if(!s)return null;let o=this.ranges[--s];r-=i.from-o.to,i=o}for(;t<0?r>i.to:r>=i.to;){if(s==this.ranges.length-1)return null;let o=this.ranges[++s];r+=o.from-i.to,i=o}return r}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,i,s;if(t>=0&&t<this.chunk.length)i=this.pos+e,s=this.chunk.charCodeAt(t);else{let r=this.resolveOffset(e,1);if(r==null)return-1;if(i=r,i>=this.chunk2Pos&&i<this.chunk2Pos+this.chunk2.length)s=this.chunk2.charCodeAt(i-this.chunk2Pos);else{let o=this.rangeIndex,l=this.range;for(;l.to<=i;)l=this.ranges[++o];this.chunk2=this.input.chunk(this.chunk2Pos=i),i+this.chunk2.length>l.to&&(this.chunk2=this.chunk2.slice(0,l.to-i)),s=this.chunk2.charCodeAt(0)}}return i>=this.token.lookAhead&&(this.token.lookAhead=i+1),s}acceptToken(e,t=0){let i=t?this.resolveOffset(t,-1):this.pos;if(i==null||i<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=i}acceptTokenTo(e,t){this.token.value=e,this.token.end=t}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:t}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),t=this.pos+e.length;this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=Ha,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let i="";for(let s of this.ranges){if(s.from>=t)break;s.to>e&&(i+=this.input.read(Math.max(s.from,e),Math.min(s.to,t)))}return i}}class oi{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:i}=t.p;Jf(this.data,e,t,this.id,i.data,i.tokenPrecTable)}}oi.prototype.contextual=oi.prototype.fallback=oi.prototype.extend=!1;class xs{constructor(e,t,i){this.precTable=t,this.elseToken=i,this.data=typeof e=="string"?Yi(e):e}token(e,t){let i=e.pos,s=0;for(;;){let r=e.next<0,o=e.resolveOffset(1,1);if(Jf(this.data,e,t,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(r||s++,o==null)break;e.reset(o,e.token)}s&&(e.reset(i,e.token),e.acceptToken(this.elseToken,s))}}xs.prototype.contextual=oi.prototype.fallback=oi.prototype.extend=!1;class Ne{constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}}function Jf(n,e,t,i,s,r){let o=0,l=1<<i,{dialect:a}=t.p.parser;e:for(;l&n[o];){let h=n[o+1];for(let d=o+3;d<h;d+=2)if((n[d+1]&l)>0){let O=n[d];if(a.allows(O)&&(e.token.value==-1||e.token.value==O||y0(O,e.token.value,s,r))){e.acceptToken(O);break}}let c=e.next,f=0,u=n[o+2];if(e.next<0&&u>f&&n[h+u*3-3]==65535){o=n[h+u*3-1];continue e}for(;f<u;){let d=f+u>>1,O=h+d+(d<<1),m=n[O],g=n[O+1]||65536;if(c<m)u=d;else if(c>=g)f=d+1;else{o=n[O+2],e.advance();continue e}}break}}function Ka(n,e,t){for(let i=e,s;(s=n[i])!=65535;i++)if(s==t)return i-e;return-1}function y0(n,e,t,i){let s=Ka(t,i,e);return s<0||Ka(t,i,n)<s}const Te=typeof process<"u"&&La&&/\bparse\b/.test(La.LOG);let mr=null;function Ja(n,e,t){let i=n.cursor(I.IncludeAnonymous);for(i.moveTo(e);;)if(!(t<0?i.childBefore(e):i.childAfter(e)))for(;;){if((t<0?i.to<e:i.from>e)&&!i.type.isError)return t<0?Math.max(0,Math.min(i.to-1,e-25)):Math.min(n.length,Math.max(i.from+1,e+25));if(t<0?i.prevSibling():i.nextSibling())break;if(!i.parent())return t<0?0:n.length}}class S0{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?Ja(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?Ja(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let t=this.trees.length-1;if(t<0)return this.nextFragment(),null;let i=this.trees[t],s=this.index[t];if(s==i.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let r=i.children[s],o=this.start[t]+i.positions[s];if(o>e)return this.nextStart=o,null;if(r instanceof K){if(o==e){if(o<this.safeFrom)return null;let l=o+r.length;if(l<=this.safeTo){let a=r.prop(M.lookAhead);if(!a||l+a<this.fragment.to)return r}}this.index[t]++,o+r.length>=Math.max(this.safeFrom,e)&&(this.trees.push(r),this.start.push(o),this.index.push(0))}else this.index[t]++,this.nextStart=o+r.length}}}class x0{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(i=>new ts)}getActions(e){let t=0,i=null,{parser:s}=e.p,{tokenizers:r}=s,o=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,a=0;for(let h=0;h<r.length;h++){if(!(1<<h&o))continue;let c=r[h],f=this.tokens[h];if(!(i&&!c.fallback)&&((c.contextual||f.start!=e.pos||f.mask!=o||f.context!=l)&&(this.updateCachedToken(f,c,e),f.mask=o,f.context=l),f.lookAhead>f.end+25&&(a=Math.max(f.lookAhead,a)),f.value!=0)){let u=t;if(f.extended>-1&&(t=this.addActions(e,f.extended,f.end,t)),t=this.addActions(e,f.value,f.end,t),!c.extend&&(i=f,t>u))break}}for(;this.actions.length>t;)this.actions.pop();return a&&e.setLookAhead(a),!i&&e.pos==this.stream.end&&(i=new ts,i.value=e.p.parser.eofTerm,i.start=i.end=e.pos,t=this.addActions(e,i.value,i.end,t)),this.mainToken=i,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new ts,{pos:i,p:s}=e;return t.start=i,t.end=Math.min(i+1,s.stream.end),t.value=i==s.stream.end?s.parser.eofTerm:0,t}updateCachedToken(e,t,i){let s=this.stream.clipPos(i.pos);if(t.token(this.stream.reset(s,e),i),e.value>-1){let{parser:r}=i.p;for(let o=0;o<r.specialized.length;o++)if(r.specialized[o]==e.value){let l=r.specializers[o](this.stream.read(e.start,e.end),i);if(l>=0&&i.p.parser.dialect.allows(l>>1)){l&1?e.extended=l>>1:e.value=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,t,i,s){for(let r=0;r<s;r+=3)if(this.actions[r]==e)return s;return this.actions[s++]=e,this.actions[s++]=t,this.actions[s++]=i,s}addActions(e,t,i,s){let{state:r}=e,{parser:o}=e.p,{data:l}=o;for(let a=0;a<2;a++)for(let h=o.stateSlot(r,a?2:1);;h+=3){if(l[h]==65535)if(l[h+1]==1)h=ht(l,h+2);else{s==0&&l[h+1]==2&&(s=this.putAction(ht(l,h+2),t,i,s));break}l[h]==t&&(s=this.putAction(ht(l,h+1),t,i,s))}return s}}class Q0{constructor(e,t,i,s){this.parser=e,this.input=t,this.ranges=s,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new b0(t,s),this.tokens=new x0(e,this.stream),this.topTerm=e.top[1];let{from:r}=s[0];this.stacks=[ys.start(this,e.top[0],r)],this.fragments=i.length&&this.stream.end-r>e.bufferLength*4?new S0(i,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,i=this.stacks=[],s,r;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;o<e.length;o++){let l=e[o];for(;;){if(this.tokens.mainToken=null,l.pos>t)i.push(l);else{if(this.advanceStack(l,i,e))continue;{s||(s=[],r=[]),s.push(l);let a=this.tokens.getMainToken(l);r.push(a.value,a.end)}}break}}if(!i.length){let o=s&&$0(s);if(o)return Te&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Te&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&s){let o=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,r,i);if(o)return Te&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(i.length>o)for(i.sort((l,a)=>a.score-l.score);i.length>o;)i.pop();i.some(l=>l.reducePos>t)&&this.recovering--}else if(i.length>1){e:for(let o=0;o<i.length-1;o++){let l=i[o];for(let a=o+1;a<i.length;a++){let h=i[a];if(l.sameState(h)||l.buffer.length>500&&h.buffer.length>500)if((l.score-h.score||l.buffer.length-h.buffer.length)>0)i.splice(a--,1);else{i.splice(o--,1);continue e}}}i.length>12&&i.splice(12,i.length-12)}this.minStackPos=i[0].pos;for(let o=1;o<i.length;o++)i[o].pos<this.minStackPos&&(this.minStackPos=i[o].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,t,i){let s=e.pos,{parser:r}=this,o=Te?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let h=e.curContext&&e.curContext.tracker.strict,c=h?e.curContext.hash:0;for(let f=this.fragments.nodeAt(s);f;){let u=this.parser.nodeSet.types[f.type.id]==f.type?r.getGoto(e.state,f.type.id):-1;if(u>-1&&f.length&&(!h||(f.prop(M.contextHash)||0)==c))return e.useNode(f,u),Te&&console.log(o+this.stackID(e)+` (via reuse of ${r.getName(f.type.id)})`),!0;if(!(f instanceof K)||f.children.length==0||f.positions[0]>0)break;let d=f.children[0];if(d instanceof K&&f.positions[0]==0)f=d;else break}}let l=r.stateSlot(e.state,4);if(l>0)return e.reduce(l),Te&&console.log(o+this.stackID(e)+` (via always-reduce ${r.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let a=this.tokens.getActions(e);for(let h=0;h<a.length;){let c=a[h++],f=a[h++],u=a[h++],d=h==a.length||!i,O=d?e:e.split(),m=this.tokens.mainToken;if(O.apply(c,f,m?m.start:O.pos,u),Te&&console.log(o+this.stackID(O)+` (via ${c&65536?`reduce of ${r.getName(c&65535)}`:"shift"} for ${r.getName(f)} @ ${s}${O==e?"":", split"})`),d)return!0;O.pos>s?t.push(O):i.push(O)}return!1}advanceFully(e,t){let i=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>i)return eh(e,t),!0}}runRecovery(e,t,i){let s=null,r=!1;for(let o=0;o<e.length;o++){let l=e[o],a=t[o<<1],h=t[(o<<1)+1],c=Te?this.stackID(l)+" -> ":"";if(l.deadEnd&&(r||(r=!0,l.restart(),Te&&console.log(c+this.stackID(l)+" (restarted)"),this.advanceFully(l,i))))continue;let f=l.split(),u=c;for(let d=0;f.forceReduce()&&d<10&&(Te&&console.log(u+this.stackID(f)+" (via force-reduce)"),!this.advanceFully(f,i));d++)Te&&(u=this.stackID(f)+" -> ");for(let d of l.recoverByInsert(a))Te&&console.log(c+this.stackID(d)+" (via recover-insert)"),this.advanceFully(d,i);this.stream.end>l.pos?(h==l.pos&&(h++,a=0),l.recoverByDelete(a,h),Te&&console.log(c+this.stackID(l)+` (via recover-delete ${this.parser.getName(a)})`),eh(l,i)):(!s||s.score<l.score)&&(s=l)}return s}stackToTree(e){return e.close(),K.build({buffer:Ss.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(mr||(mr=new WeakMap)).get(e);return t||mr.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}}function eh(n,e){for(let t=0;t<e.length;t++){let i=e[t];if(i.pos==n.pos&&i.sameState(n)){e[t].score<n.score&&(e[t]=n);return}}e.push(n)}class w0{constructor(e,t,i){this.source=e,this.flags=t,this.disabled=i}allows(e){return!this.disabled||this.disabled[e]==0}}const gr=n=>n;class eu{constructor(e){this.start=e.start,this.shift=e.shift||gr,this.reduce=e.reduce||gr,this.reuse=e.reuse||gr,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class Oi extends Af{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let l=0;l<e.repeatNodeCount;l++)t.push("");let i=Object.keys(e.topRules).map(l=>e.topRules[l][1]),s=[];for(let l=0;l<t.length;l++)s.push([]);function r(l,a,h){s[l].push([a,a.deserialize(String(h))])}if(e.nodeProps)for(let l of e.nodeProps){let a=l[0];typeof a=="string"&&(a=M[a]);for(let h=1;h<l.length;){let c=l[h++];if(c>=0)r(c,a,l[h++]);else{let f=l[h+-c];for(let u=-c;u>0;u--)r(l[h++],a,f);h++}}}this.nodeSet=new Lo(t.map((l,a)=>Se.define({name:a>=this.minRepeatTerm?void 0:l,id:a,props:s[a],top:i.indexOf(a)>-1,error:a==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(a)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=vf;let o=Yi(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;l<this.specializerSpecs.length;l++)this.specialized[l]=this.specializerSpecs[l].term;this.specializers=this.specializerSpecs.map(th),this.states=Yi(e.states,Uint32Array),this.data=Yi(e.stateData),this.goto=Yi(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(l=>typeof l=="number"?new oi(o,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,i){let s=new Q0(this,e,t,i);for(let r of this.wrappers)s=r(s,e,t,i);return s}getGoto(e,t,i=!1){let s=this.goto;if(t>=s[0])return-1;for(let r=s[t+1];;){let o=s[r++],l=o&1,a=s[r++];if(l&&i)return a;for(let h=r+(o>>1);r<h;r++)if(s[r]==e)return a;if(l)return-1}}hasAction(e,t){let i=this.data;for(let s=0;s<2;s++)for(let r=this.stateSlot(e,s?2:1),o;;r+=3){if((o=i[r])==65535)if(i[r+1]==1)o=i[r=ht(i,r+2)];else{if(i[r+1]==2)return ht(i,r+2);break}if(o==t||o==0)return ht(i,r+1)}return 0}stateSlot(e,t){return this.states[e*6+t]}stateFlag(e,t){return(this.stateSlot(e,0)&t)>0}validAction(e,t){return!!this.allActions(e,i=>i==t?!0:null)}allActions(e,t){let i=this.stateSlot(e,4),s=i?t(i):void 0;for(let r=this.stateSlot(e,1);s==null;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=ht(this.data,r+2);else break;s=t(ht(this.data,r+1))}return s}nextStates(e){let t=[];for(let i=this.stateSlot(e,1);;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=ht(this.data,i+2);else break;if(!(this.data[i+2]&1)){let s=this.data[i+1];t.some((r,o)=>o&1&&r==s)||t.push(this.data[i],s)}}return t}configure(e){let t=Object.assign(Object.create(Oi.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let i=this.topRules[e.top];if(!i)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=i}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(i=>{let s=e.tokenizers.find(r=>r.from==i);return s?s.to:i})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((i,s)=>{let r=e.specializers.find(l=>l.from==i.external);if(!r)return i;let o=Object.assign(Object.assign({},i),{external:r.to});return t.specializers[s]=th(o),o})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),i=t.map(()=>!1);if(e)for(let r of e.split(" ")){let o=t.indexOf(r);o>=0&&(i[o]=!0)}let s=null;for(let r=0;r<t.length;r++)if(!i[r])for(let o=this.dialects[t[r]],l;(l=this.data[o++])!=65535;)(s||(s=new Uint8Array(this.maxTerm+1)))[l]=1;return new w0(e,i,s)}static deserialize(e){return new Oi(e)}}function ht(n,e){return n[e]|n[e+1]<<16}function $0(n){let e=null;for(let t of n){let i=t.p.stoppedAt;(t.pos==t.p.stream.end||i!=null&&t.pos>i)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.score<t.score)&&(e=t)}return e}function th(n){if(n.external){let e=n.extend?1:0;return(t,i)=>n.external(t,i)<<1|e}return n.get}const P0=312,ih=1,k0=2,v0=3,Z0=4,T0=313,C0=315,R0=316,A0=5,X0=6,M0=0,$o=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],tu=125,W0=59,Po=47,Y0=42,q0=43,E0=45,V0=60,_0=44,D0=63,z0=46,U0=new eu({start:!1,shift(n,e){return e==A0||e==X0||e==C0?n:e==R0},strict:!1}),j0=new Ne((n,e)=>{let{next:t}=n;(t==tu||t==-1||e.context)&&n.acceptToken(T0)},{contextual:!0,fallback:!0}),B0=new Ne((n,e)=>{let{next:t}=n,i;$o.indexOf(t)>-1||t==Po&&((i=n.peek(1))==Po||i==Y0)||t!=tu&&t!=W0&&t!=-1&&!e.context&&n.acceptToken(P0)},{contextual:!0}),N0=new Ne((n,e)=>{let{next:t}=n;if(t==q0||t==E0){if(n.advance(),t==n.next){n.advance();let i=!e.context&&e.canShift(ih);n.acceptToken(i?ih:k0)}}else t==D0&&n.peek(1)==z0&&(n.advance(),n.advance(),(n.next<48||n.next>57)&&n.acceptToken(v0))},{contextual:!0});function br(n,e){return n>=65&&n<=90||n>=97&&n<=122||n==95||n>=192||!e&&n>=48&&n<=57}const I0=new Ne((n,e)=>{if(n.next!=V0||!e.dialectEnabled(M0)||(n.advance(),n.next==Po))return;let t=0;for(;$o.indexOf(n.next)>-1;)n.advance(),t++;if(br(n.next,!0)){for(n.advance(),t++;br(n.next,!1);)n.advance(),t++;for(;$o.indexOf(n.next)>-1;)n.advance(),t++;if(n.next==_0)return;for(let i=0;;i++){if(i==7){if(!br(n.next,!0))return;break}if(n.next!="extends".charCodeAt(i))break;n.advance(),t++}}n.acceptToken(Z0,-t)}),G0=Vs({"get set async static":p.modifier,"for while do if else switch try catch finally return throw break continue default case":p.controlKeyword,"in of await yield void typeof delete instanceof":p.operatorKeyword,"let var const using function class extends":p.definitionKeyword,"import export from":p.moduleKeyword,"with debugger as new":p.keyword,TemplateString:p.special(p.string),super:p.atom,BooleanLiteral:p.bool,this:p.self,null:p.null,Star:p.modifier,VariableName:p.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":p.function(p.variableName),VariableDefinition:p.definition(p.variableName),Label:p.labelName,PropertyName:p.propertyName,PrivatePropertyName:p.special(p.propertyName),"CallExpression/MemberExpression/PropertyName":p.function(p.propertyName),"FunctionDeclaration/VariableDefinition":p.function(p.definition(p.variableName)),"ClassDeclaration/VariableDefinition":p.definition(p.className),PropertyDefinition:p.definition(p.propertyName),PrivatePropertyDefinition:p.definition(p.special(p.propertyName)),UpdateOp:p.updateOperator,"LineComment Hashbang":p.lineComment,BlockComment:p.blockComment,Number:p.number,String:p.string,Escape:p.escape,ArithOp:p.arithmeticOperator,LogicOp:p.logicOperator,BitOp:p.bitwiseOperator,CompareOp:p.compareOperator,RegExp:p.regexp,Equals:p.definitionOperator,Arrow:p.function(p.punctuation),": Spread":p.punctuation,"( )":p.paren,"[ ]":p.squareBracket,"{ }":p.brace,"InterpolationStart InterpolationEnd":p.special(p.brace),".":p.derefOperator,", ;":p.separator,"@":p.meta,TypeName:p.typeName,TypeDefinition:p.definition(p.typeName),"type enum interface implements namespace module declare":p.definitionKeyword,"abstract global Privacy readonly override":p.modifier,"is keyof unique infer":p.operatorKeyword,JSXAttributeValue:p.attributeValue,JSXText:p.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":p.angleBracket,"JSXIdentifier JSXNameSpacedName":p.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":p.attributeName,"JSXBuiltin/JSXIdentifier":p.standard(p.tagName)}),L0={__proto__:null,export:20,as:25,from:33,default:36,async:41,function:42,extends:54,this:58,true:66,false:66,null:78,void:82,typeof:86,super:102,new:136,delete:148,yield:157,await:161,class:166,public:229,private:229,protected:229,readonly:231,instanceof:250,satisfies:253,in:254,const:256,import:290,keyof:345,unique:349,infer:355,is:391,abstract:411,implements:413,type:415,let:418,var:420,using:423,interface:429,enum:433,namespace:439,module:441,declare:445,global:449,for:468,of:477,while:480,with:484,do:488,if:492,else:494,switch:498,case:504,try:510,catch:514,finally:518,return:522,throw:526,break:530,continue:534,debugger:538},F0={__proto__:null,async:123,get:125,set:127,declare:189,public:191,private:191,protected:191,static:193,abstract:195,override:197,readonly:203,accessor:205,new:395},H0={__proto__:null,"<":187},K0=Oi.deserialize({version:14,states:"$@QO%TQ^OOO%[Q^OOO'_Q`OOP(lOWOOO*zQ?NdO'#CiO+RO!bO'#CjO+aO#tO'#CjO+oO!0LbO'#D^O.QQ^O'#DdO.bQ^O'#DoO%[Q^O'#DwO0fQ^O'#EPOOQ?Mr'#EX'#EXO1PQWO'#EUOOQO'#Em'#EmOOQO'#Ih'#IhO1XQWO'#GpO1dQWO'#ElO1iQWO'#ElO3hQ?NdO'#JmO6[Q?NdO'#JnO6uQWO'#F[O6zQ&jO'#FsOOQ?Mr'#Fe'#FeO7VO,YO'#FeO7eQ7[O'#FzO9RQWO'#FyOOQ?Mr'#Jn'#JnOOQ?Mp'#Jm'#JmO9WQWO'#GtOOQU'#KZ'#KZO9cQWO'#IUO9hQ?MxO'#IVOOQU'#JZ'#JZOOQU'#IZ'#IZQ`Q^OOO`Q^OOO9pQMnO'#DsO9wQ^O'#D{O:OQ^O'#D}O9^QWO'#GpO:VQ7[O'#CoO:eQWO'#EkO:pQWO'#EvO:uQ7[O'#FdO;dQWO'#GpOOQO'#K['#K[O;iQWO'#K[O;wQWO'#GxO;wQWO'#GyO;wQWO'#G{O9^QWO'#HOO<nQWO'#HRO>VQWO'#CeO>gQWO'#H_O>oQWO'#HeO>oQWO'#HgO`Q^O'#HiO>oQWO'#HkO>oQWO'#HnO>tQWO'#HtO>yQ?MyO'#HzO%[Q^O'#H|O?UQ?MyO'#IOO?aQ?MyO'#IQO9hQ?MxO'#ISO?lQ?NdO'#CiO@nQ`O'#DiQOQWOOO%[Q^O'#D}OAUQWO'#EQO:VQ7[O'#EkOAaQWO'#EkOAlQpO'#FdOOQU'#Cg'#CgOOQ?Mp'#Dn'#DnOOQ?Mp'#Jq'#JqO%[Q^O'#JqOOQO'#Jt'#JtOOQO'#Id'#IdOBlQ`O'#EdOOQ?Mp'#Ec'#EcOOQ?Mp'#Jx'#JxOChQ?NQO'#EdOCrQ`O'#ETOOQO'#Js'#JsODWQ`O'#JtOEeQ`O'#ETOCrQ`O'#EdPErO#@ItO'#CbPOOO)CDx)CDxOOOO'#I['#I[OE}O!bO,59UOOQ?Mr,59U,59UOOOO'#I]'#I]OF]O#tO,59UO%[Q^O'#D`OOOO'#I_'#I_OFkO!0LbO,59xOOQ?Mr,59x,59xOFyQ^O'#I`OG^QWO'#JoOI]QrO'#JoO+}Q^O'#JoOIdQWO,5:OOIzQWO'#EmOJXQWO'#KOOJdQWO'#J}OJdQWO'#J}OJlQWO,5;ZOJqQWO'#J|OOQ?Mv,5:Z,5:ZOJxQ^O,5:ZOLvQ?NdO,5:cOMgQWO,5:kONQQ?MxO'#J{ONXQWO'#JzO9WQWO'#JzONmQWO'#JzONuQWO,5;YONzQWO'#JzO!#PQrO'#JnOOQ?Mr'#Ci'#CiO%[Q^O'#EPO!#oQrO,5:pOOQQ'#Ju'#JuOOQO-E<f-E<fO9^QWO,5=[O!$VQWO,5=[O!$[Q^O,5;WO!&_Q7[O'#EhO!'xQWO,5;WO!'}Q^O'#DvO!(XQ`O,5;aO!(aQ`O,5;aO%[Q^O,5;aOOQU'#FS'#FSOOQU'#FU'#FUO%[Q^O,5;bO%[Q^O,5;bO%[Q^O,5;bO%[Q^O,5;bO%[Q^O,5;bO%[Q^O,5;bO%[Q^O,5;bO%[Q^O,5;bO%[Q^O,5;bO%[Q^O,5;bOOQU'#FY'#FYO!(oQ^O,5;sOOQ?Mr,5;x,5;xOOQ?Mr,5;y,5;yOOQ?Mr,5;{,5;{O%[Q^O'#IlO!*rQ?MxO,5<gO%[Q^O,5;bO!&_Q7[O,5;bO!+aQ7[O,5;bO!-RQ7[O'#EZO%[Q^O,5;vOOQ?Mr,5;z,5;zO!-YQ&jO'#FiO!.VQ&jO'#KSO!-qQ&jO'#KSO!.^Q&jO'#KSOOQO'#KS'#KSO!.rQ&jO,5<ROOOS,5<_,5<_O!/TQ^O'#FuOOOS'#Ik'#IkO7VO,YO,5<PO!/[Q&jO'#FwOOQ?Mr,5<P,5<PO!/{Q!LQO'#CvOOQ?Mr'#Cz'#CzO!0`O!0LbO'#DOO!0|Q7[O,5<dO!1TQWO,5<fO!2pQ$ISO'#GVO!2}QWO'#GWO!3SQWO'#GWO!4rQ$ISO'#G[O!5nQ`O'#G`OOQO'#Gk'#GkO!+hQ7[O'#GjOOQO'#Gm'#GmO!+hQ7[O'#GlO!6aQ!LQO'#JgOOQ?Mr'#Jg'#JgO!6kQWO'#JfO!6yQWO'#JeO!7RQWO'#CuOOQ?Mr'#Cx'#CxO!7ZQWO'#CzOOQ?Mr'#DS'#DSOOQ?Mr'#DU'#DUO1SQWO'#DWO!+hQ7[O'#F}O!+hQ7[O'#GPO!7`QWO'#GRO!7eQWO'#GSO!3SQWO'#GYO!+hQ7[O'#G_O!7jQWO'#EnO!8XQWO,5<eOOQ?Mp'#Cr'#CrO!8aQWO'#EoO!9ZQ`O'#EpOOQ?Mp'#J|'#J|O!9bQ?MxO'#K]O9hQ?MxO,5=`O`Q^O,5>pOOQU'#Jc'#JcOOQU,5>q,5>qOOQU-E<X-E<XO!;aQ?NdO,5:_O!9UQ`O,5:]O!=zQ?NdO,5:gO%[Q^O,5:gO!@bQ?NdO,5:iOOQO,5@v,5@vO!ARQ7[O,5=[O!AaQ?MxO'#JdO9RQWO'#JdO!ArQ?MxO,59ZO!A}Q`O,59ZO!BVQ7[O,59ZO:VQ7[O,59ZO!BbQWO,5;WO!BjQWO'#H^O!COQWO'#K`O%[Q^O,5;|O!9UQ`O,5<OO!CWQWO,5=wO!C]QWO,5=wO!CbQWO,5=wO9hQ?MxO,5=wO;wQWO,5=gOOQO'#Cv'#CvO!CpQ`O,5=dO!CxQ7[O,5=eO!DTQWO,5=gO!DYQpO,5=jO!DbQWO'#K[O>tQWO'#HTO9^QWO'#HVO!DgQWO'#HVO:VQ7[O'#HXO!DlQWO'#HXOOQU,5=m,5=mO!DqQWO'#HYO!ESQWO'#CoO!EXQWO,59PO!EcQWO,59PO!GhQ^O,59POOQU,59P,59PO!GxQ?MxO,59PO%[Q^O,59PO!JTQ^O'#HaOOQU'#Hb'#HbOOQU'#Hc'#HcO`Q^O,5=yO!JkQWO,5=yO`Q^O,5>PO`Q^O,5>RO!JpQWO,5>TO`Q^O,5>VO!JuQWO,5>YO!JzQ^O,5>`OOQU,5>f,5>fO%[Q^O,5>fO9hQ?MxO,5>hOOQU,5>j,5>jO# UQWO,5>jOOQU,5>l,5>lO# UQWO,5>lOOQU,5>n,5>nO# rQ`O'#D[O%[Q^O'#JqO# |Q`O'#JqO#!kQ`O'#DjO#!|Q`O'#DjO#%_Q^O'#DjO#%fQWO'#JpO#%nQWO,5:TO#%sQWO'#EqO#&RQWO'#KPO#&ZQWO,5;[O#&`Q`O'#DjO#&mQ`O'#ESOOQ?Mr,5:l,5:lO%[Q^O,5:lO#&tQWO,5:lO>tQWO,5;VO!A}Q`O,5;VO!BVQ7[O,5;VO:VQ7[O,5;VO#&|QWO,5@]O#'RQ(CYO,5:pOOQO-E<b-E<bO#(XQ?NQO,5;OOCrQ`O,5:oO#(cQ`O,5:oOCrQ`O,5;OO!ArQ?MxO,5:oOOQ?Mp'#Eg'#EgOOQO,5;O,5;OO%[Q^O,5;OO#(pQ?MxO,5;OO#({Q?MxO,5;OO!A}Q`O,5:oOOQO,5;U,5;UO#)ZQ?MxO,5;OPOOO'#IY'#IYP#)oO#@ItO,58|POOO,58|,58|OOOO-E<Y-E<YOOQ?Mr1G.p1G.pOOOO-E<Z-E<ZO#)zQpO,59zOOOO-E<]-E<]OOQ?Mr1G/d1G/dO#*PQrO,5>zO+}Q^O,5>zOOQO,5?Q,5?QO#*ZQ^O'#I`OOQO-E<^-E<^O#*hQWO,5@ZO#*pQrO,5@ZO#*wQWO,5@iOOQ?Mr1G/j1G/jO%[Q^O,5@jO#+PQWO'#IfOOQO-E<d-E<dO#*wQWO,5@iOOQ?Mp1G0u1G0uOOQ?Mv1G/u1G/uOOQ?Mv1G0V1G0VO%[Q^O,5@gO#+eQ?MxO,5@gO#+vQ?MxO,5@gO#+}QWO,5@fO9WQWO,5@fO#,VQWO,5@fO#,eQWO'#IiO#+}QWO,5@fOOQ?Mp1G0t1G0tO!(XQ`O,5:rO!(dQ`O,5:rOOQQ,5:t,5:tO#-VQYO,5:tO#-_Q7[O1G2vO9^QWO1G2vOOQ?Mr1G0r1G0rO#-mQ?NdO1G0rO#.rQ?NbO,5;SOOQ?Mr'#GU'#GUO#/`Q?NdO'#JgO!$[Q^O1G0rO#1hQrO'#JrO%[Q^O'#JrO#1rQWO,5:bOOQ?Mr'#D['#D[OOQ?Mr1G0{1G0{O%[Q^O1G0{OOQ?Mr1G1e1G1eO#1wQWO1G0{O#4]Q?NdO1G0|O#4dQ?NdO1G0|O#6zQ?NdO1G0|O#7RQ?NdO1G0|O#9iQ?NdO1G0|O#<PQ?NdO1G0|O#<WQ?NdO1G0|O#<_Q?NdO1G0|O#>uQ?NdO1G0|O#>|Q?NdO1G0|O#AZQ07bO'#CiO#CUQ07bO1G1_O#C]Q07bO'#JnO#CpQ?NdO,5?WOOQ?Mp-E<j-E<jO#E}Q?NdO1G0|O#FzQ?NdO1G0|OOQ?Mr1G0|1G0|O#GzQ7[O'#JwO#HUQWO,5:uO#HZQ?NdO1G1bO#H}Q&jO,5<VO#IVQ&jO,5<WO#I_Q&jO'#FnO#IvQWO'#FmOOQO'#KT'#KTOOQO'#Ij'#IjO#I{Q&jO1G1mOOQ?Mr1G1m1G1mOOOS1G1x1G1xO#J^Q07bO'#JmO#JhQWO,5<aO!(oQ^O,5<aOOOS-E<i-E<iOOQ?Mr1G1k1G1kO#JmQ`O'#KSOOQ?Mr,5<c,5<cO#JuQ`O,5<cO!&_Q7[O'#DQOOOO'#I^'#I^O#JzO!0LbO,59jOOQ?Mr,59j,59jO%[Q^O1G2OO!7eQWO'#InO#KVQ7[O,5<xOOQ?Mr,5<u,5<uO!+hQ7[O'#IqO#KuQ7[O,5=UO!+hQ7[O'#IsO#LhQ7[O,5=WO!&_Q7[O,5=YOOQO1G2Q1G2QO#LrQpO'#CrO#MVQ$ISO'#EoO#NUQ`O'#G`O#NrQpO,5<qO#NyQWO'#KWO9WQWO'#KWO$ XQWO,5<sO!+hQ7[O,5<rO$ ^QWO'#GXO$ oQWO,5<rO$ tQpO'#GUO$!RQpO'#KXO$!]QWO'#KXO!&_Q7[O'#KXO$!bQWO,5<vO$!gQ`O'#GaO!5iQ`O'#GaO$!xQWO'#GcO$!}QWO'#GeO!3SQWO'#GhO$#SQ?MxO'#IpO$#_Q`O,5<zOOQ?Mv,5<z,5<zO$#fQ`O'#GaO$#tQ`O'#GbO$#|Q`O'#GbO$$RQ7[O,5=UO$$cQ7[O,5=WOOQ?Mr,5=Z,5=ZO!+hQ7[O,5@QO!+hQ7[O,5@QO$$sQWO'#IuO$%OQWO,5@PO$%WQWO,59aOOQ?Mr,59f,59fO$%zQ!LSO,59rOOQ?Mr'#Jk'#JkO$&mQ7[O,5<iO$'`Q7[O,5<kO@fQWO,5<mOOQ?Mr,5<n,5<nO$'jQWO,5<tO$'oQ7[O,5<yO$(PQWO'#JzO!$[Q^O1G2PO$(UQWO1G2PO9WQWO'#J}O9WQWO'#EqO%[Q^O'#EqO9WQWO'#IwO$(ZQ?MxO,5@wOOQU1G2z1G2zOOQU1G4[1G4[OOQ?Mr1G/y1G/yOOQ?Mr1G/w1G/wO$*]Q?NdO1G0ROOQU1G2v1G2vO!&_Q7[O1G2vO%[Q^O1G2vO#-bQWO1G2vO$,aQ7[O'#EhOOQ?Mp,5@O,5@OO$,kQ?MxO,5@OOOQU1G.u1G.uO!ArQ?MxO1G.uO!A}Q`O1G.uO!BVQ7[O1G.uO$,|QWO1G0rO$-RQWO'#CiO$-^QWO'#KaO$-fQWO,5=xO$-kQWO'#KaO$-pQWO'#KaO$.OQWO'#I}O$.^QWO,5@zO$.fQrO1G1hOOQ?Mr1G1j1G1jO9^QWO1G3cO@fQWO1G3cO$.mQWO1G3cO$.rQWO1G3cOOQU1G3c1G3cO!DTQWO1G3RO!&_Q7[O1G3OO$.wQWO1G3OOOQU1G3P1G3PO!&_Q7[O1G3PO$.|QWO1G3PO$/UQ`O'#G}OOQU1G3R1G3RO!5iQ`O'#IyO!DYQpO1G3UOOQU1G3U1G3UOOQU,5=o,5=oO$/^Q7[O,5=qO9^QWO,5=qO$!}QWO,5=sO9RQWO,5=sO!A}Q`O,5=sO!BVQ7[O,5=sO:VQ7[O,5=sO$/lQWO'#K_O$/wQWO,5=tOOQU1G.k1G.kO$/|Q?MxO1G.kO@fQWO1G.kO$0XQWO1G.kO9hQ?MxO1G.kO$2aQrO,5@|O$2nQWO,5@|O9WQWO,5@|O$2yQ^O,5={O$3QQWO,5={OOQU1G3e1G3eO`Q^O1G3eOOQU1G3k1G3kOOQU1G3m1G3mO>oQWO1G3oO$3VQ^O1G3qO$7ZQ^O'#HpOOQU1G3t1G3tO$7hQWO'#HvO>tQWO'#HxOOQU1G3z1G3zO$7pQ^O1G3zO9hQ?MxO1G4QOOQU1G4S1G4SOOQ?Mp'#G]'#G]O9hQ?MxO1G4UO9hQ?MxO1G4WO$;wQWO,5@]O!(oQ^O,5;]O9WQWO,5;]O>tQWO,5:UO!(oQ^O,5:UO!A}Q`O,5:UO$;|Q07bO,5:UOOQO,5;],5;]O$<WQ`O'#IaO$<nQWO,5@[OOQ?Mr1G/o1G/oO$<vQ`O'#IgO$=QQWO,5@kOOQ?Mp1G0v1G0vO#!|Q`O,5:UOOQO'#Ic'#IcO$=YQ`O,5:nOOQ?Mv,5:n,5:nO#&wQWO1G0WOOQ?Mr1G0W1G0WO%[Q^O1G0WOOQ?Mr1G0q1G0qO>tQWO1G0qO!A}Q`O1G0qO!BVQ7[O1G0qOOQ?Mp1G5w1G5wO!ArQ?MxO1G0ZOOQO1G0j1G0jO%[Q^O1G0jO$=aQ?MxO1G0jO$=lQ?MxO1G0jO!A}Q`O1G0ZOCrQ`O1G0ZO$=zQ?MxO1G0jOOQO1G0Z1G0ZO$>`Q?NdO1G0jPOOO-E<W-E<WPOOO1G.h1G.hOOOO1G/f1G/fO$>jQpO,5<gO$>rQrO1G4fOOQO1G4l1G4lO%[Q^O,5>zO$>|QWO1G5uO$?UQWO1G6TO$?^QrO1G6UO9WQWO,5?QO$?hQ?NdO1G6RO%[Q^O1G6RO$?xQ?MxO1G6RO$@ZQWO1G6QO$@ZQWO1G6QO9WQWO1G6QO$@cQWO,5?TO9WQWO,5?TOOQO,5?T,5?TO$@wQWO,5?TO$(PQWO,5?TOOQO-E<g-E<gOOQQ1G0^1G0^OOQQ1G0`1G0`O#-YQWO1G0`OOQU7+(b7+(bO!&_Q7[O7+(bO%[Q^O7+(bO$AVQWO7+(bO$AbQ7[O7+(bO$ApQ?NdO,5=UO$CxQ?NdO,5=WO$FQQ?NdO,5=UO$H`Q?NdO,5=WO$JnQ?NdO,59rO$LsQ?NdO,5<iO$N{Q?NdO,5<kO%#TQ?NdO,5<yOOQ?Mr7+&^7+&^O%%cQ?NdO7+&^O%&VQ^O'#IbO%&dQWO,5@^O%&lQrO,5@^OOQ?Mr1G/|1G/|O%&vQWO7+&gOOQ?Mr7+&g7+&gO%&{Q07bO,5:cO%[Q^O7+&yO%'VQ07bO,5:_O%'dQ07bO,5:gO%'nQ07bO,5:iO%'xQ7[O'#IeO%(SQWO,5@cOOQ?Mr1G0a1G0aOOQO1G1q1G1qOOQO1G1r1G1rO%([QtO,5<YO!(oQ^O,5<XOOQO-E<h-E<hOOQ?Mr7+'X7+'XOOOS7+'d7+'dOOOS1G1{1G1{O%(gQWO1G1{OOQ?Mr1G1}1G1}O%(lQpO,59lOOOO-E<[-E<[OOQ?Mr1G/U1G/UO%(sQ?NdO7+'jOOQ?Mr,5?Y,5?YO%)gQpO,5?YOOQ?Mr1G2d1G2dP!&_Q7[O'#InPOQ?Mr-E<l-E<lO%*VQ7[O,5?]OOQ?Mr-E<o-E<oO%*xQ7[O,5?_OOQ?Mr-E<q-E<qO%+SQpO1G2tO%+ZQpO'#CrO%+qQ7[O'#J}O%+xQ^O'#EqOOQ?Mr1G2]1G2]O%,SQWO'#ImO%,hQWO,5@rO%,hQWO,5@rO%,pQWO,5@rO%,{QWO,5@rOOQO1G2_1G2_O%-ZQ7[O1G2^O!+hQ7[O1G2^O%-kQ$ISO'#IoO%-xQWO,5@sO!&_Q7[O,5@sO%.QQpO,5@sOOQ?Mr1G2b1G2bOOQ?Mp,5<{,5<{OOQ?Mp,5<|,5<|O$(PQWO,5<|OCcQWO,5<|O!A}Q`O,5<{OOQO'#Gd'#GdO%.[QWO,5<}OOQ?Mp,5=P,5=PO$(PQWO,5=SOOQO,5?[,5?[OOQO-E<n-E<nOOQ?Mv1G2f1G2fO!5iQ`O,5<{O%.dQWO,5<|O$!xQWO,5<}O%.oQ`O,5<|O!+hQ7[O'#IqO%/`Q7[O1G2pO!+hQ7[O'#IsO%0RQ7[O1G2rO%0]Q7[O1G5lO%0gQ7[O1G5lOOQO,5?a,5?aOOQO-E<s-E<sOOQO1G.{1G.{O!9UQ`O,59tO%[Q^O,59tOOQ?Mr,5<h,5<hO%0tQWO1G2XO!+hQ7[O1G2`O%0yQ?NdO7+'kOOQ?Mr7+'k7+'kO!$[Q^O7+'kO%1mQWO,5;]OOQ?Mp,5?c,5?cOOQ?Mp-E<u-E<uO%1rQpO'#KYO#&wQWO7+(bO4UQrO7+(bO$AYQWO7+(bO%1|Q?NbO'#CiO%2aQ?NbO,5=QO%3RQWO,5=QOOQ?Mp1G5j1G5jOOQU7+$a7+$aO!ArQ?MxO7+$aO!A}Q`O7+$aO!$[Q^O7+&^O%3WQWO'#I|O%3oQWO,5@{OOQO1G3d1G3dO9^QWO,5@{O%3oQWO,5@{O%3wQWO,5@{OOQO,5?i,5?iOOQO-E<{-E<{OOQ?Mr7+'S7+'SO%3|QWO7+(}O9hQ?MxO7+(}O9^QWO7+(}O@fQWO7+(}OOQU7+(m7+(mO%4RQ?NbO7+(jO!&_Q7[O7+(jO%4]QpO7+(kOOQU7+(k7+(kO!&_Q7[O7+(kO%4dQWO'#K^O%4oQWO,5=iOOQO,5?e,5?eOOQO-E<w-E<wOOQU7+(p7+(pO%6RQ`O'#HWOOQU1G3]1G3]O!&_Q7[O1G3]O%[Q^O1G3]O%6YQWO1G3]O%6eQ7[O1G3]O9hQ?MxO1G3_O$!}QWO1G3_O9RQWO1G3_O!A}Q`O1G3_O!BVQ7[O1G3_O%6sQWO'#I{O%7XQWO,5@yO%7aQ`O,5@yOOQ?Mp1G3`1G3`OOQU7+$V7+$VO@fQWO7+$VO9hQ?MxO7+$VO%7lQWO7+$VO%[Q^O1G6hO%[Q^O1G6iO%7qQ?MxO1G6hO%7{Q^O1G3gO%8SQWO1G3gO%8XQ^O1G3gOOQU7+)P7+)PO9hQ?MxO7+)ZO`Q^O7+)]OOQU'#Kd'#KdOOQU'#JO'#JOO%8`Q^O,5>[OOQU,5>[,5>[O%[Q^O'#HqO%8mQWO'#HsOOQU,5>b,5>bO9WQWO,5>bOOQU,5>d,5>dOOQU7+)f7+)fOOQU7+)l7+)lOOQU7+)p7+)pOOQU7+)r7+)rO%8rQ`O1G5wO%9WQ07bO1G0wO%9bQWO1G0wOOQO1G/p1G/pO%9mQ07bO1G/pO>tQWO1G/pO!(oQ^O'#DjOOQO,5>{,5>{OOQO-E<_-E<_OOQO,5?R,5?ROOQO-E<e-E<eO!A}Q`O1G/pOOQO-E<a-E<aOOQ?Mv1G0Y1G0YOOQ?Mr7+%r7+%rO#&wQWO7+%rOOQ?Mr7+&]7+&]O>tQWO7+&]O!A}Q`O7+&]OOQO7+%u7+%uO$>`Q?NdO7+&UOOQO7+&U7+&UO%[Q^O7+&UO%9wQ?MxO7+&UO!ArQ?MxO7+%uO!A}Q`O7+%uO%:SQ?MxO7+&UO%:bQ?NdO7++mO%[Q^O7++mO%:rQWO7++lO%:rQWO7++lOOQO1G4o1G4oO9WQWO1G4oO%:zQWO1G4oOOQQ7+%z7+%zO#&wQWO<<K|O4UQrO<<K|O%;YQWO<<K|OOQU<<K|<<K|O!&_Q7[O<<K|O%[Q^O<<K|O%;bQWO<<K|O%;mQ?NdO,5?]O%=uQ?NdO,5?_O%?}Q?NdO1G2^O%B]Q?NdO1G2pO%DeQ?NdO1G2rO%FmQrO,5>|O%[Q^O,5>|OOQO-E<`-E<`O%FwQWO1G5xOOQ?Mr<<JR<<JRO%GPQ07bO1G0rO%IWQ07bO1G0|O%I_Q07bO1G0|O%K`Q07bO1G0|O%KgQ07bO1G0|O%MhQ07bO1G0|O& iQ07bO1G0|O& pQ07bO1G0|O& wQ07bO1G0|O&#xQ07bO1G0|O&$PQ07bO1G0|O&$WQ?NdO<<JeO&&OQ07bO1G0|O&&{Q07bO1G0|O&'{Q07bO'#JgO&*OQ07bO1G1bO&*]Q07bO1G0RO&*gQ7[O,5?POOQO-E<c-E<cO!(oQ^O'#FpOOQO'#KU'#KUOOQO1G1t1G1tO&*qQWO1G1sO&*vQ07bO,5?WOOOS7+'g7+'gOOOO1G/W1G/WOOQ?Mr1G4t1G4tO!+hQ7[O7+(`O&-WQrO'#CiO&-bQWO,5?XO9WQWO,5?XOOQO-E<k-E<kO&-pQWO1G6^O&-pQWO1G6^O&-xQWO1G6^O&.TQ7[O7+'xO&.eQpO,5?ZO&.oQWO,5?ZO!&_Q7[O,5?ZOOQO-E<m-E<mO&.tQpO1G6_O&/OQWO1G6_OOQ?Mp1G2h1G2hO$(PQWO1G2hOOQ?Mp1G2g1G2gO&/WQWO1G2iO!&_Q7[O1G2iOOQ?Mp1G2n1G2nO!A}Q`O1G2gOCcQWO1G2hO&/]QWO1G2iO&/eQWO1G2hO$!xQWO1G2iO&0XQ7[O,5?]OOQ?Mr-E<p-E<pO&0zQ7[O,5?_OOQ?Mr-E<r-E<rO!+hQ7[O7++WOOQ?Mr1G/`1G/`O&1UQWO1G/`OOQ?Mr7+'s7+'sO&1ZQ7[O7+'zO&1kQ?NdO<<KVOOQ?Mr<<KV<<KVO&2_QWO1G0wO!&_Q7[O'#IvO&2dQWO,5@tO&4fQrO<<K|O!&_Q7[O1G2lOOQU<<G{<<G{O!ArQ?MxO<<G{O&4mQ?NdO<<IxOOQ?Mr<<Ix<<IxOOQO,5?h,5?hO&5aQWO,5?hO&5fQWO,5?hOOQO-E<z-E<zO&5tQWO1G6gO&5tQWO1G6gO9^QWO1G6gO@fQWO<<LiOOQU<<Li<<LiO&5|QWO<<LiO9hQ?MxO<<LiOOQU<<LU<<LUO%4RQ?NbO<<LUOOQU<<LV<<LVO%4]QpO<<LVO&6RQ`O'#IxO&6^QWO,5@xO!(oQ^O,5@xOOQU1G3T1G3TO%+xQ^O'#JqOOQO'#Iz'#IzO9hQ?MxO'#IzO&6fQ`O,5=rOOQU,5=r,5=rO&6mQ`O'#EdO&7RQ`O'#GcO&7WQWO7+(wO&7]QWO7+(wOOQU7+(w7+(wO!&_Q7[O7+(wO%[Q^O7+(wO&7eQWO7+(wOOQU7+(y7+(yO9hQ?MxO7+(yO$!}QWO7+(yO9RQWO7+(yO!A}Q`O7+(yO&7pQWO,5?gOOQO-E<y-E<yOOQO'#HZ'#HZO&7{QWO1G6eO9hQ?MxO<<GqOOQU<<Gq<<GqO@fQWO<<GqO&8TQWO7+,SO&8YQWO7+,TO%[Q^O7+,SO%[Q^O7+,TOOQU7+)R7+)RO&8_QWO7+)RO&8dQ^O7+)RO&8kQWO7+)ROOQU<<Lu<<LuOOQU<<Lw<<LwOOQU-E<|-E<|OOQU1G3v1G3vO&8pQWO,5>]OOQU,5>_,5>_O&8uQWO1G3|O9WQWO7+&cO!(oQ^O7+&cOOQO7+%[7+%[O&8zQ07bO1G6UO>tQWO7+%[OOQ?Mr<<I^<<I^OOQ?Mr<<Iw<<IwO>tQWO<<IwOOQO<<Ip<<IpO$>`Q?NdO<<IpO%[Q^O<<IpOOQO<<Ia<<IaO!ArQ?MxO<<IaO&9UQ?MxO<<IpO&9aQ?NdO<= XO&9qQWO<= WOOQO7+*Z7+*ZO9WQWO7+*ZOOQUANAhANAhO&9yQrOANAhO!&_Q7[OANAhO#&wQWOANAhO4UQrOANAhO&:QQWOANAhO%[Q^OANAhO&:YQ?NdO7+'xO&<hQ?NdO,5?]O&>pQ?NdO,5?_O&@xQ?NdO7+'zO&CWQrO1G4hO&CbQ07bO7+&^O&EcQ07bO,5=UO&GgQ07bO,5=WO&GwQ07bO,5=UO&HXQ07bO,5=WO&HiQ07bO,59rO&JlQ07bO,5<iO&LlQ07bO,5<kO&N}Q07bO,5<yO'!pQ07bO7+'jO'!}Q07bO7+'kO'#[QWO,5<[OOQO7+'_7+'_O'#aQ7[O<<KzOOQO1G4s1G4sO'#hQWO1G4sO'#sQWO1G4sO'$RQWO7++xO'$RQWO7++xO!&_Q7[O1G4uO'$ZQpO1G4uO'$eQWO7++yOOQ?Mp7+(S7+(SO'$mQWO7+(TO'$xQpO7+(TOOQ?Mp7+(R7+(RO$(PQWO7+(SO'%PQWO7+(TO!&_Q7[O7+(TOCcQWO7+(SO'%UQWO7+(TO'%^Q7[O<<NrOOQ?Mr7+$z7+$zO'%hQpO,5?bOOQO-E<t-E<tO'%rQ?NbO7+(WOOQUAN=gAN=gO9^QWO1G5SOOQO1G5S1G5SO'&SQWO1G5SO'&XQWO7+,RO'&XQWO7+,RO9hQ?MxOANBTO@fQWOANBTOOQUANBTANBTOOQUANApANApOOQUANAqANAqO'&aQWO,5?dOOQO-E<v-E<vO'&lQ07bO1G6dOOQO,5?f,5?fOOQO-E<x-E<xOOQU1G3^1G3^O%+xQ^O,5<}O'&vQWO,5<}OOQU<<Lc<<LcO!&_Q7[O<<LcO&7WQWO<<LcO'&{QWO<<LcO%[Q^O<<LcOOQU<<Le<<LeO9hQ?MxO<<LeO$!}QWO<<LeO9RQWO<<LeO''TQ`O1G5RO''`QWO7+,POOQUAN=]AN=]O9hQ?MxOAN=]OOQU<= n<= nOOQU<= o<= oO''hQWO<= nO''mQWO<= oOOQU<<Lm<<LmO''rQWO<<LmO''wQ^O<<LmOOQU1G3w1G3wO>tQWO7+)hO'(OQWO<<I}O'(ZQ07bO<<I}OOQO<<Hv<<HvOOQ?MrAN?cAN?cOOQOAN?[AN?[O$>`Q?NdOAN?[OOQOAN>{AN>{O%[Q^OAN?[OOQO<<Mu<<MuOOQUG27SG27SO!&_Q7[OG27SO#&wQWOG27SO'(eQrOG27SO4UQrOG27SO'(lQWOG27SO'(tQ07bO<<JeO')RQ07bO1G2^O'*tQ07bO,5?]O',tQ07bO,5?_O'.tQ07bO1G2pO'0tQ07bO1G2rO'2tQ07bO<<KVO'3RQ07bO<<IxOOQO1G1v1G1vO!+hQ7[OANAfOOQO7+*_7+*_O'3`QWO7+*_O'3kQWO<= dO'3sQpO7+*aOOQ?Mp<<Ko<<KoO$(PQWO<<KoOCcQWO<<KoO'3}QWO<<KoOOQ?Mp<<Kn<<KnO'4YQpO<<KoO$(PQWO<<KnO'4aQWO<<KoO!&_Q7[O<<KoOOQO7+*n7+*nO9^QWO7+*nO'4fQWO<= mOOQUG27oG27oO9hQ?MxOG27oO!(oQ^O1G5OO'4nQWO7+,OO&7WQWOANA}OOQUANA}ANA}O!&_Q7[OANA}O'4vQWOANA}OOQUANBPANBPO9hQ?MxOANBPO$!}QWOANBPOOQO'#H['#H[OOQO7+*m7+*mOOQUG22wG22wOOQUANEYANEYOOQUANEZANEZOOQUANBXANBXO'5OQWOANBXOOQU<<MS<<MSO!(oQ^OAN?iOOQOG24vG24vO$>`Q?NdOG24vO#&wQWOLD,nOOQULD,nLD,nO!&_Q7[OLD,nO'5TQrOLD,nO'5[Q07bO7+'xO'6}Q07bO,5?]O'8}Q07bO,5?_O':}Q07bO7+'zO'<pQ7[OG27QOOQO<<My<<MyOOQ?MpANAZANAZO$(PQWOANAZOCcQWOANAZO'=QQWOANAZOOQ?MpANAYANAYO'=]QpOANAZOOQO<<NY<<NYOOQULD-ZLD-ZO'=dQ07bO7+*jOOQUG27iG27iO&7WQWOG27iO!&_Q7[OG27iOOQUG27kG27kO9hQ?MxOG27kOOQUG27sG27sO'=nQ07bOG25TOOQOLD*bLD*bOOQU!$(!Y!$(!YO#&wQWO!$(!YO!&_Q7[O!$(!YO'=xQ?NdOG27QOOQ?MpG26uG26uO$(PQWOG26uOCcQWOG26uO'@WQWOG26uOOQULD-TLD-TO&7WQWOLD-TOOQULD-VLD-VOOQU!)9Et!)9EtO#&wQWO!)9EtOOQ?MpLD,aLD,aO$(PQWOLD,aOCcQWOLD,aOOQU!$(!o!$(!oOOQU!.K;`!.K;`O'@cQ07bOG27QOOQ?Mp!$( {!$( {O$(PQWO!$( {OOQ?Mp!)9Eg!)9EgO!(oQ^O'#DwO1PQWO'#EUO'BUQrO'#JmO'B]QMnO'#DsO'BdQ^O'#D{O'BkQrO'#CiO'ERQrO'#CiO!(oQ^O'#D}O'EcQ^O,5;WO!(oQ^O,5;bO!(oQ^O,5;bO!(oQ^O,5;bO!(oQ^O,5;bO!(oQ^O,5;bO!(oQ^O,5;bO!(oQ^O,5;bO!(oQ^O,5;bO!(oQ^O,5;bO!(oQ^O,5;bO!(oQ^O'#IlO'GfQWO,5<gO!(oQ^O,5;bO'GnQ7[O,5;bO'IXQ7[O,5;bO!(oQ^O,5;vO!&_Q7[O'#GjO'GnQ7[O'#GjO!&_Q7[O'#GlO'GnQ7[O'#GlO1SQWO'#DWO1SQWO'#DWO!&_Q7[O'#F}O'GnQ7[O'#F}O!&_Q7[O'#GPO'GnQ7[O'#GPO!&_Q7[O'#G_O'GnQ7[O'#G_O!(oQ^O,5:gO'I`Q`O'#D[O!(oQ^O,5@jO'EcQ^O1G0rO'IjQ07bO'#CiO!(oQ^O1G2OO!&_Q7[O'#IqO'GnQ7[O'#IqO!&_Q7[O'#IsO'GnQ7[O'#IsO'ItQpO'#CrO!&_Q7[O,5<rO'GnQ7[O,5<rO'EcQ^O1G2PO!(oQ^O7+&yO!&_Q7[O1G2^O'GnQ7[O1G2^O!&_Q7[O'#IqO'GnQ7[O'#IqO!&_Q7[O'#IsO'GnQ7[O'#IsO!&_Q7[O1G2`O'GnQ7[O1G2`O'EcQ^O7+'kO'EcQ^O7+&^O!&_Q7[OANAfO'GnQ7[OANAfO'JXQWO'#ElO'J^QWO'#ElO'JfQWO'#F[O'JkQWO'#EvO'JpQWO'#KOO'J{QWO'#J|O'KWQWO,5;WO'K]Q7[O,5<dO'KdQWO'#GWO'KiQWO'#GWO'KnQWO,5<eO'KvQWO,5;WO'LOQ07bO1G1_O'LVQWO,5<rO'L[QWO,5<rO'LaQWO,5<tO'LfQWO,5<tO'LkQWO1G2PO'LpQWO1G0rO'LuQ7[O<<KzO'L|Q7[O<<KzO7eQ7[O'#FzO9RQWO'#FyOAaQWO'#EkO!(oQ^O,5;sO!3SQWO'#GWO!3SQWO'#GWO!3SQWO'#GYO!3SQWO'#GYO!+hQ7[O7+(`O!+hQ7[O7+(`O%+SQpO1G2tO%+SQpO1G2tO!&_Q7[O,5=YO!&_Q7[O,5=Y",stateData:"'NQ~O'wOS'xOSTOS'yRQ~OPYOQYOSfOY!VOaqOdzOeyOmkOoYOpkOqkOwkOyYO{YO!PWO!TkO!UkO![XO!fuO!iZO!lYO!mYO!nYO!pvO!rwO!uxO!y]O#t!PO$V|O%e}O%g!QO%i!OO%j!OO%k!OO%n!RO%p!SO%s!TO%t!TO%v!UO&S!WO&Y!XO&[!YO&^!ZO&`![O&c!]O&i!^O&o!_O&q!`O&s!aO&u!bO&w!cO(OSO(QTO(TUO([VO(j[O(yiO~OWtO~P`OPYOQYOSfOd!jOe!iOmkOoYOpkOqkOwkOyYO{YO!PWO!TkO!UkO![!eO!fuO!iZO!lYO!mYO!nYO!pvO!r!gO!u!hO$V!kO(O!dO(QTO(TUO([VO(j[O(yiO~Oa!wOp!nO!P!oO!_!yO!`!vO!a!vO!y;QO#Q!pO#R!pO#S!xO#T!pO#U!pO#X!zO#Y!zO(P!lO(QTO(TUO(`!mO(j!sO~O'y!{O~OP]XR]X[]Xa]Xo]X}]X!P]X!Y]X!i]X!m]X#O]X#P]X#]]X#hfX#k]X#l]X#m]X#n]X#o]X#p]X#q]X#r]X#s]X#u]X#w]X#y]X#z]X$P]X'u]X([]X(m]X(t]X(u]X~O!d%PX~P(qO_!}O(Q#PO(R!}O(S#PO~O_#QO(S#PO(T#PO(U#QO~Ou#SO!R#TO(]#TO(^#VO~OPYOQYOSfOd!jOe!iOmkOoYOpkOqkOwkOyYO{YO!PWO!TkO!UkO![!eO!fuO!iZO!lYO!mYO!nYO!pvO!r!gO!u!hO$V!kO(O;UO(QTO(TUO([VO(j[O(yiO~O!X#ZO!Y#WO!V(cP!V(qP~P+}O!Z#cO~P`OPYOQYOSfOd!jOe!iOoYOpkOqkOwkOyYO{YO!PWO!TkO!UkO![!eO!fuO!iZO!lYO!mYO!nYO!pvO!r!gO!u!hO$V!kO(QTO(TUO([VO(j[O(yiO~Om#mO!X#iO!y]O#f#lO#g#iO(O;VO!h(nP~P.iO!i#oO(O#nO~O!u#sO!y]O%e#tO~O#h#uO~O!d#vO#h#uO~OP$[OR#zO[$cOo$aO}#yO!P#{O!Y$_O!i#xO!m$[O#O$RO#k$OO#l$PO#m$PO#n$PO#o$QO#p$RO#q$RO#r$bO#s$RO#u$SO#w$UO#y$WO#z$XO([VO(m$YO(t#|O(u#}O~Oa(aX'u(aX's(aX!h(aX!V(aX![(aX%f(aX!d(aX~P1qO#P$dO#]$eO$P$eOP(bXR(bX[(bXo(bX}(bX!P(bX!Y(bX!i(bX!m(bX#O(bX#k(bX#l(bX#m(bX#n(bX#o(bX#p(bX#q(bX#r(bX#s(bX#u(bX#w(bX#y(bX#z(bX([(bX(m(bX(t(bX(u(bX![(bX%f(bX~Oa(bX'u(bX's(bX!V(bX!h(bXs(bX!d(bX~P4UO#]$eO~O$[$hO$^$gO$e$mO~OSfO![$nO$h$oO$j$qO~Oh%VOm%WOo%XOp$tOq$tOw%YOy%ZO{%[O!P${O![$|O!f%aO!i$xO#g%bO$V%_O$r%]O$t%^O$w%`O(O$sO(QTO(TUO([$uO(t$}O(u%POg(XP~O!i%cO~O!P%fO![%gO(O%eO~O!d%kO~Oa%lO'u%lO~O}%pO~P%[O(P!lO~P%[O%k%tO~P%[Oh%VO!i%cO(O%eO(P!lO~Oe%{O!i%cO(O%eO~O#s$RO~O}&QO![%}O!i&PO%g&TO(O%eO(P!lO(QTO(TUO`)SP~O!u#sO~O%p&VO!P)OX![)OX(O)OX~O(O&WO~O!r&]O#t!PO%g!QO%i!OO%j!OO%k!OO%n!RO%p!SO%s!TO%t!TO~Od&bOe&aO!u&_O%e&`O%x&^O~P;|Od&eOeyO![&dO!r&]O!uxO!y]O#t!PO%e}O%i!OO%j!OO%k!OO%n!RO%p!SO%s!TO%t!TO%v!UO~Ob&hO#]&kO%g&fO(P!lO~P=RO!i&lO!r&pO~O!i#oO~O![XO~Oa%lO't&xO'u%lO~Oa%lO't&{O'u%lO~Oa%lO't&}O'u%lO~O's]X!V]Xs]X!h]X&W]X![]X%f]X!d]X~P(qO!_'[O!`'TO!a'TO(P!lO(QTO(TUO~Op'RO!P'QO!X'UO(`'PO!Z(dP!Z(sP~P@YOk'_O![']O(O%eO~Oe'dO!i%cO(O%eO~O}&QO!i&PO~Op!nO!P!oO!y;QO#Q!pO#R!pO#T!pO#U!pO(P!lO(QTO(TUO(`!mO(j!sO~O!_'jO!`'iO!a'iO#S!pO#X'kO#Y'kO~PAtOa%lOh%VO!d#vO!i%cO'u%lO(m'mO~O!m'qO#]'oO~PCSOp!nO!P!oO(QTO(TUO(`!mO(j!sO~O![XOp(hX!P(hX!_(hX!`(hX!a(hX!y(hX#Q(hX#R(hX#S(hX#T(hX#U(hX#X(hX#Y(hX(P(hX(Q(hX(T(hX(`(hX(j(hX~O!`'iO!a'iO(P!lO~PCrO'z'uO'{'uO'|'wO~O_!}O(Q'yO(R!}O(S'yO~O_#QO(S'yO(T'yO(U#QO~Ou#SO!R#TO(]#TO(^'}O~O!X(PO!V'SX!V'YX!Y'SX!Y'YX~P+}O!Y(RO!V(cX~OP$[OR#zO[$cOo$aO}#yO!P#{O!Y(RO!i#xO!m$[O#O$RO#k$OO#l$PO#m$PO#n$PO#o$QO#p$RO#q$RO#r$bO#s$RO#u$SO#w$UO#y$WO#z$XO([VO(m$YO(t#|O(u#}O~O!V(cX~PGfO!V(WO~O!V(pX!Y(pX!d(pX!h(pX(m(pX~O#](pX#h#aX!Z(pX~PIiO#](XO!V(rX!Y(rX~O!Y(YO!V(qX~O!V(]O~O#]$eO~PIiO!Z(^O~P`OR#zO}#yO!P#{O!i#xO([VOP!ka[!kao!ka!Y!ka!m!ka#O!ka#k!ka#l!ka#m!ka#n!ka#o!ka#p!ka#q!ka#r!ka#s!ka#u!ka#w!ka#y!ka#z!ka(m!ka(t!ka(u!ka~Oa!ka'u!ka's!ka!V!ka!h!kas!ka![!ka%f!ka!d!ka~PKPO!h(_O~O!d#vO#](`O(m'mO!Y(oXa(oX'u(oX~O!h(oX~PMlO!P%fO![%gO!y]O#f(eO#g(dO(O%eO~O!Y(fO!h(nX~O!h(hO~O!P%fO![%gO#g(dO(O%eO~OP(bXR(bX[(bXo(bX}(bX!P(bX!Y(bX!i(bX!m(bX#O(bX#k(bX#l(bX#m(bX#n(bX#o(bX#p(bX#q(bX#r(bX#s(bX#u(bX#w(bX#y(bX#z(bX([(bX(m(bX(t(bX(u(bX~O!d#vO!h(bX~P! YOR(jO}(iO!i#xO#P$dO!y!xa!P!xa~O!u!xa%e!xa![!xa#f!xa#g!xa(O!xa~P!#ZO!u(nO~OPYOQYOSfOd!jOe!iOmkOoYOpkOqkOwkOyYO{YO!PWO!TkO!UkO![XO!fuO!iZO!lYO!mYO!nYO!pvO!r!gO!u!hO$V!kO(O!dO(QTO(TUO([VO(j[O(yiO~Oh%VOm%WOo%XOp$tOq$tOw%YOy%ZO{;nO!P${O![$|O!f=OO!i$xO#g;tO$V%_O$r;pO$t;rO$w%`O(O(rO(QTO(TUO([$uO(t$}O(u%PO~O#h(tO~O!X(vO!h(fP~P%[O(`(xO(j[O~O!P(zO!i#xO(`(xO(j[O~OP;POQ;POSfOd<zOe!iOmkOo;POpkOqkOwkOy;PO{;PO!PWO!TkO!UkO![!eO!f;SO!iZO!l;PO!m;PO!n;PO!p;TO!r;WO!u!hO$V!kO(O)XO(QTO(TUO([VO(j[O(y<xO~O!Y$_Oa$oa'u$oa's$oa!h$oa!V$oa![$oa%f$oa!d$oa~O#t)`O~P!&_Oh%VOm%WOo%XOp$tOq$tOw%YOy%ZO{%[O!P${O![$|O!f%aO!i$xO#g%bO$V%_O$r%]O$t%^O$w%`O(O(rO(QTO(TUO([$uO(t$}O(u%PO~Og(kP~P!+hO})eO!d)dO![$]X$Y$]X$[$]X$^$]X$e$]X~O!d)dO![(vX$Y(vX$[(vX$^(vX$e(vX~O})eO~P!-qO})eO![(vX$Y(vX$[(vX$^(vX$e(vX~O![)gO$Y)kO$[)fO$^)fO$e)lO~O!X)oO~P!(oO$[$hO$^$gO$e)sO~Ok$xX}$xX!P$xX#P$xX(t$xX(u$xX~OgjXg$xXkjX!YjX#]jX~P!/gOu)uO(])vO(^)xO~Ok*RO})zO!P){O(t$}O(u%PO~Og)yO~P!0kOg*SO~Oh%VOm%WOo%XOp$tOq$tOw%YOy%ZO{;nO!P*UO![*VO!f=OO!i$xO#g;tO$V%_O$r;pO$t;rO$w%`O(QTO(TUO([$uO(t$}O(u%PO~O!X*YO(O*TO!h(zP~P!1YO#h*[O~O!i*]O~Oh%VOm%WOo%XOp$tOq$tOw%YOy%ZO{;nO!P${O![$|O!f=OO!i$xO#g;tO$V%_O$r;pO$t;rO$w%`O(O*_O(QTO(TUO([$uO(t$}O(u%PO~O!X*bO!V({P~P!3XOo*nO!P*fO!_*lO!`*eO!a*eO!i*]O#X*mO%]*hO(P!lO(`!mO~O!Z*kO~P!4|O#P$dOk(ZX}(ZX!P(ZX(t(ZX(u(ZX!Y(ZX#](ZX~Og(ZX#}(ZX~P!5uOk*sO#]*rOg(YX!Y(YX~O!Y*tOg(XX~O(O&WOg(XP~Op*wO~O!i*|O~O(O(rO~Om+QO!P%fO!X#iO![%gO!y]O#f#lO#g#iO(O%eO!h(nP~O!d#vO#h+RO~O!P%fO!X+TO!Y(YO![%gO(O%eO!V(qP~Op'XO!P+VO!X+UO(QTO(TUO(`(xO~O!Z(sP~P!8uO!Y+WOa)PX'u)PX~OP$[OR#zO[$cOo$aO}#yO!P#{O!i#xO!m$[O#O$RO#k$OO#l$PO#m$PO#n$PO#o$QO#p$RO#q$RO#r$bO#s$RO#u$SO#w$UO#y$WO#z$XO([VO(m$YO(t#|O(u#}O~Oa!ga!Y!ga'u!ga's!ga!V!ga!h!gas!ga![!ga%f!ga!d!ga~P!9mOR#zO}#yO!P#{O!i#xO([VOP!oa[!oao!oa!Y!oa!m!oa#O!oa#k!oa#l!oa#m!oa#n!oa#o!oa#p!oa#q!oa#r!oa#s!oa#u!oa#w!oa#y!oa#z!oa(m!oa(t!oa(u!oa~Oa!oa'u!oa's!oa!V!oa!h!oas!oa![!oa%f!oa!d!oa~P!<TOR#zO}#yO!P#{O!i#xO([VOP!qa[!qao!qa!Y!qa!m!qa#O!qa#k!qa#l!qa#m!qa#n!qa#o!qa#p!qa#q!qa#r!qa#s!qa#u!qa#w!qa#y!qa#z!qa(m!qa(t!qa(u!qa~Oa!qa'u!qa's!qa!V!qa!h!qas!qa![!qa%f!qa!d!qa~P!>kOh%VOk+aO![']O%f+`O~O!d+cOa(WX![(WX'u(WX!Y(WX~Oa%lO![XO'u%lO~Oh%VO!i%cO~Oh%VO!i%cO(O%eO~O!d#vO#h(tO~Ob+nO%g+oO(O+kO(QTO(TUO!Z)TP~O!Y+pO`)SX~O[+tO~O`+uO~O![%}O(O%eO(P!lO`)SP~Oh%VO#]+zO~Oh%VOk+}O![$|O~O![,PO~O},RO![XO~O%k%tO~O!u,WO~Oe,]O~Ob,^O(O#nO(QTO(TUO!Z)RP~Oe%{O~O%g!QO(O&WO~P=RO[,cO`,bO~OPYOQYOSfOdzOeyOmkOoYOpkOqkOwkOyYO{YO!PWO!TkO!UkO!fuO!iZO!lYO!mYO!nYO!pvO!uxO!y]O%e}O(QTO(TUO([VO(j[O(yiO~O![!eO!r!gO$V!kO(O!dO~P!EkO`,bOa%lO'u%lO~OPYOQYOSfOd!jOe!iOmkOoYOpkOqkOwkOyYO{YO!PWO!TkO!UkO![!eO!fuO!iZO!lYO!mYO!nYO!pvO!u!hO$V!kO(O!dO(QTO(TUO([VO(j[O(yiO~Oa,hO!rwO#t!OO%i!OO%j!OO%k!OO~P!HTO!i&lO~O&Y,nO~O![,pO~O&k,rO&m,sOP&haQ&haS&haY&haa&had&hae&ham&hao&hap&haq&haw&hay&ha{&ha!P&ha!T&ha!U&ha![&ha!f&ha!i&ha!l&ha!m&ha!n&ha!p&ha!r&ha!u&ha!y&ha#t&ha$V&ha%e&ha%g&ha%i&ha%j&ha%k&ha%n&ha%p&ha%s&ha%t&ha%v&ha&S&ha&Y&ha&[&ha&^&ha&`&ha&c&ha&i&ha&o&ha&q&ha&s&ha&u&ha&w&ha's&ha(O&ha(Q&ha(T&ha([&ha(j&ha(y&ha!Z&ha&a&hab&ha&f&ha~O(O,xO~Oh!bX!Y!OX!Z!OX!d!OX!d!bX!i!bX#]!OX~O!Y!bX!Z!bX~P# ZO!d,}O#],|Oh(eX!Y#eX!Y(eX!Z#eX!Z(eX!d(eX!i(eX~Oh%VO!d-PO!i%cO!Y!^X!Z!^X~Op!nO!P!oO(QTO(TUO(`!mO~OP;POQ;POSfOd<zOe!iOmkOo;POpkOqkOwkOy;PO{;PO!PWO!TkO!UkO![!eO!f;SO!iZO!l;PO!m;PO!n;PO!p;TO!r;WO!u!hO$V!kO(QTO(TUO([VO(j[O(y<xO~O(O;zO~P##_O!Y-TO!Z(dX~O!Z-VO~O!d,}O#],|O!Y#eX!Z#eX~O!Y-WO!Z(sX~O!Z-YO~O!`-ZO!a-ZO(P!lO~P#!|O!Z-^O~P'_Ok-aO![']O~O!V-fO~Op!xa!_!xa!`!xa!a!xa#Q!xa#R!xa#S!xa#T!xa#U!xa#X!xa#Y!xa(P!xa(Q!xa(T!xa(`!xa(j!xa~P!#ZO!m-kO#]-iO~PCSO!`-mO!a-mO(P!lO~PCrOa%lO#]-iO'u%lO~Oa%lO!d#vO#]-iO'u%lO~Oa%lO!d#vO!m-kO#]-iO'u%lO(m'mO~O'z'uO'{'uO'|-rO~Os-sO~O!V'Sa!Y'Sa~P!9mO!X-wO!V'SX!Y'SX~P%[O!Y(RO!V(ca~O!V(ca~PGfO!Y(YO!V(qa~O!P%fO!X-{O![%gO(O%eO!V'YX!Y'YX~O#]-}O!Y(oa!h(oaa(oa'u(oa~O!d#vO~P#+eO!Y(fO!h(na~O!P%fO![%gO#g.RO(O%eO~Om.WO!P%fO!X.TO![%gO!y]O#f.VO#g.TO(O%eO!Y']X!h']X~OR.[O!i#xO~Oh%VOk._O![']O%f.^O~Oa#`i!Y#`i'u#`i's#`i!V#`i!h#`is#`i![#`i%f#`i!d#`i~P!9mOk=UO})zO!P){O(t$}O(u%PO~O#h#[aa#[a#]#[a'u#[a!Y#[a!h#[a![#[a!V#[a~P#.aO#h(ZXP(ZXR(ZX[(ZXa(ZXo(ZX!i(ZX!m(ZX#O(ZX#k(ZX#l(ZX#m(ZX#n(ZX#o(ZX#p(ZX#q(ZX#r(ZX#s(ZX#u(ZX#w(ZX#y(ZX#z(ZX'u(ZX([(ZX(m(ZX!h(ZX!V(ZX's(ZXs(ZX![(ZX%f(ZX!d(ZX~P!5uO!Y.lO!h(fX~P!9mO!h.oO~O!V.qO~OP$[OR#zO}#yO!P#{O!i#xO!m$[O([VO[#jia#jio#ji!Y#ji#O#ji#l#ji#m#ji#n#ji#o#ji#p#ji#q#ji#r#ji#s#ji#u#ji#w#ji#y#ji#z#ji'u#ji(m#ji(t#ji(u#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#k#ji~P#1|O#k$OO~P#1|OP$[OR#zOo$aO}#yO!P#{O!i#xO!m$[O#k$OO#l$PO#m$PO#n$PO([VO[#jia#ji!Y#ji#O#ji#p#ji#q#ji#r#ji#s#ji#u#ji#w#ji#y#ji#z#ji'u#ji(m#ji(t#ji(u#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#o#ji~P#4kO#o$QO~P#4kOP$[OR#zO[$cOo$aO}#yO!P#{O!i#xO!m$[O#O$RO#k$OO#l$PO#m$PO#n$PO#o$QO#p$RO#q$RO#r$bO#s$RO([VOa#ji!Y#ji#w#ji#y#ji#z#ji'u#ji(m#ji(t#ji(u#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#u#ji~P#7YOP$[OR#zO[$cOo$aO}#yO!P#{O!i#xO!m$[O#O$RO#k$OO#l$PO#m$PO#n$PO#o$QO#p$RO#q$RO#r$bO#s$RO#u$SO([VO(u#}Oa#ji!Y#ji#y#ji#z#ji'u#ji(m#ji(t#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#w$UO~P#9pO#w#ji~P#9pO#u$SO~P#7YOP$[OR#zO[$cOo$aO}#yO!P#{O!i#xO!m$[O#O$RO#k$OO#l$PO#m$PO#n$PO#o$QO#p$RO#q$RO#r$bO#s$RO#u$SO#w$UO([VO(t#|O(u#}Oa#ji!Y#ji#z#ji'u#ji(m#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#y#ji~P#<fO#y$WO~P#<fOP]XR]X[]Xo]X}]X!P]X!i]X!m]X#O]X#P]X#]]X#hfX#k]X#l]X#m]X#n]X#o]X#p]X#q]X#r]X#s]X#u]X#w]X#y]X#z]X$P]X([]X(m]X(t]X(u]X!Y]X!Z]X~O#}]X~P#?TOP$[OR#zO[;hOo;fO}#yO!P#{O!i#xO!m$[O#O;]O#k;YO#l;ZO#m;ZO#n;ZO#o;[O#p;]O#q;]O#r;gO#s;]O#u;^O#w;`O#y;bO#z;cO([VO(m$YO(t#|O(u#}O~O#}.sO~P#AbO#P$dO#];iO$P;iO#}(bX!Z(bX~P! YOa'`a!Y'`a'u'`a's'`a!h'`a!V'`as'`a!['`a%f'`a!d'`a~P!9mO[#jia#jio#ji!Y#ji#O#ji#o#ji#p#ji#q#ji#r#ji#s#ji#u#ji#w#ji#y#ji#z#ji'u#ji(m#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~OP$[OR#zO}#yO!P#{O!i#xO!m$[O#k$OO#l$PO#m$PO#n$PO([VO(t#ji(u#ji~P#DdOk=UO})zO!P){O(t$}O(u%POP#jiR#ji!i#ji!m#ji#k#ji#l#ji#m#ji#n#ji([#ji~P#DdO!Y.wOg(kX~P!0kOg.yO~Oa$Oi!Y$Oi'u$Oi's$Oi!V$Oi!h$Ois$Oi![$Oi%f$Oi!d$Oi~P!9mO$[.zO$^.zO~O$[.{O$^.{O~O!d)dO#].|O![$bX$Y$bX$[$bX$^$bX$e$bX~O!X.}O~O![)gO$Y/PO$[)fO$^)fO$e/QO~O!Y;dO!Z(aX~P#AbO!Z/RO~O!d)dO$e(vX~O$e/TO~Ou)uO(])vO(^/WO~O!V/[O~P!&_O(t$}Ok%^a}%^a!P%^a(u%^a!Y%^a#]%^a~Og%^a#}%^a~P#K^O(u%POk%`a}%`a!P%`a(t%`a!Y%`a#]%`a~Og%`a#}%`a~P#LPO!YfX!dfX!hfX!h$xX(mfX~P!/gO!X/eO!Y(YO(O/dO!V(qP!V({P~P!1YOo*nO!_*lO!`*eO!a*eO!i*]O#X*mO%]*hO(P!lO~Op'XO!P/fO!X+UO!Z*kO(QTO(TUO(`;wO!Z(sP~P#MjO!h/gO~P#.aO!Y/hO!d#vO(m'mO!h(zX~O!h/mO~O!P%fO!X*YO![%gO(O%eO!h(zP~O#h/oO~O!V$xX!Y$xX!d%PX~P!/gO!Y/pO!V({X~P#.aO!d/rO~O!V/tO~Oh%VOo/xO!d#vO!i%cO(m'mO~O(O/zO~O!d+cO~Oa%lO!Y0OO'u%lO~O!Z0QO~P!4|O!`0RO!a0RO(P!lO(`!mO~O!P0TO(`!mO~O#X0UO~Og%^a!Y%^a#]%^a#}%^a~P!0kOg%`a!Y%`a#]%`a#}%`a~P!0kO(O&WOg'iX!Y'iX~O!Y*tOg(Xa~Og0_O~OR0`O}0`O!P0aO#P$dOkza(tza(uza!Yza#]za~Ogza#}za~P$%]O})zO!P){Ok$qa(t$qa(u$qa!Y$qa#]$qa~Og$qa#}$qa~P$&UO})zO!P){Ok$sa(t$sa(u$sa!Y$sa#]$sa~Og$sa#}$sa~P$&wO#h0dO~Og%Ra!Y%Ra#]%Ra#}%Ra~P!0kO!d#vO~O#h0gO~O!Y+WOa)Pa'u)Pa~OR#zO}#yO!P#{O!i#xO([VOP!oi[!oio!oi!Y!oi!m!oi#O!oi#k!oi#l!oi#m!oi#n!oi#o!oi#p!oi#q!oi#r!oi#s!oi#u!oi#w!oi#y!oi#z!oi(m!oi(t!oi(u!oi~Oa!oi'u!oi's!oi!V!oi!h!ois!oi![!oi%f!oi!d!oi~P$(fOh%VOo%XOp$tOq$tOw%YOy%ZO{;nO!P${O![$|O!f=OO!i$xO#g;tO$V%_O$r;pO$t;rO$w%`O(QTO(TUO([$uO(t$}O(u%PO~Om0pO(O0oO~P$*|O!d+cOa(Wa![(Wa'u(Wa!Y(Wa~O#h0vO~O[]X!YfX!ZfX~O!Y0wO!Z)TX~O!Z0yO~O[0zO~Ob0|O(O+kO(QTO(TUO~O![%}O(O%eO`'qX!Y'qX~O!Y+pO`)Sa~O!h1PO~P!9mO[1SO~O`1TO~O#]1WO~Ok1ZO![$|O~O(`(xO!Z)QP~Oh%VOk1dO![1aO%f1cO~O[1nO!Y1lO!Z)RX~O!Z1oO~O`1qOa%lO'u%lO~O(O#nO(QTO(TUO~O#P$dO#]$eO$P$eOP(bXR(bX[(bXo(bX}(bX!P(bX!Y(bX!i(bX!m(bX#O(bX#k(bX#l(bX#m(bX#n(bX#o(bX#p(bX#q(bX#r(bX#u(bX#w(bX#y(bX#z(bX([(bX(m(bX(t(bX(u(bX~O#s1tO&W1uOa(bX~P$0dO#]$eO#s1tO&W1uO~Oa1wO~P%[Oa1yO~O&a1|OP&_iQ&_iS&_iY&_ia&_id&_ie&_im&_io&_ip&_iq&_iw&_iy&_i{&_i!P&_i!T&_i!U&_i![&_i!f&_i!i&_i!l&_i!m&_i!n&_i!p&_i!r&_i!u&_i!y&_i#t&_i$V&_i%e&_i%g&_i%i&_i%j&_i%k&_i%n&_i%p&_i%s&_i%t&_i%v&_i&S&_i&Y&_i&[&_i&^&_i&`&_i&c&_i&i&_i&o&_i&q&_i&s&_i&u&_i&w&_i's&_i(O&_i(Q&_i(T&_i([&_i(j&_i(y&_i!Z&_ib&_i&f&_i~Ob2SO!Z2QO&f2RO~P`O![XO!i2UO~O&m,sOP&hiQ&hiS&hiY&hia&hid&hie&him&hio&hip&hiq&hiw&hiy&hi{&hi!P&hi!T&hi!U&hi![&hi!f&hi!i&hi!l&hi!m&hi!n&hi!p&hi!r&hi!u&hi!y&hi#t&hi$V&hi%e&hi%g&hi%i&hi%j&hi%k&hi%n&hi%p&hi%s&hi%t&hi%v&hi&S&hi&Y&hi&[&hi&^&hi&`&hi&c&hi&i&hi&o&hi&q&hi&s&hi&u&hi&w&hi's&hi(O&hi(Q&hi(T&hi([&hi(j&hi(y&hi!Z&hi&a&hib&hi&f&hi~O!V2[O~O!Y!^a!Z!^a~P#AbOp!nO!P!oO!X2bO(`!mO!Y'TX!Z'TX~P@YO!Y-TO!Z(da~O!Y'ZX!Z'ZX~P!8uO!Y-WO!Z(sa~O!Z2iO~P'_Oa%lO#]2rO'u%lO~Oa%lO!d#vO#]2rO'u%lO~Oa%lO!d#vO!m2vO#]2rO'u%lO(m'mO~Oa%lO'u%lO~P!9mO!Y$_Os$oa~O!V'Si!Y'Si~P!9mO!Y(RO!V(ci~O!Y(YO!V(qi~O!V(ri!Y(ri~P!9mO!Y(oi!h(oia(oi'u(oi~P!9mO#]2xO!Y(oi!h(oia(oi'u(oi~O!Y(fO!h(ni~O!P%fO![%gO!y]O#f2}O#g2|O(O%eO~O!P%fO![%gO#g2|O(O%eO~Ok3UO![']O%f3TO~Oh%VOk3UO![']O%f3TO~O#h%^aP%^aR%^a[%^aa%^ao%^a!i%^a!m%^a#O%^a#k%^a#l%^a#m%^a#n%^a#o%^a#p%^a#q%^a#r%^a#s%^a#u%^a#w%^a#y%^a#z%^a'u%^a([%^a(m%^a!h%^a!V%^a's%^as%^a![%^a%f%^a!d%^a~P#K^O#h%`aP%`aR%`a[%`aa%`ao%`a!i%`a!m%`a#O%`a#k%`a#l%`a#m%`a#n%`a#o%`a#p%`a#q%`a#r%`a#s%`a#u%`a#w%`a#y%`a#z%`a'u%`a([%`a(m%`a!h%`a!V%`a's%`as%`a![%`a%f%`a!d%`a~P#LPO#h%^aP%^aR%^a[%^aa%^ao%^a!Y%^a!i%^a!m%^a#O%^a#k%^a#l%^a#m%^a#n%^a#o%^a#p%^a#q%^a#r%^a#s%^a#u%^a#w%^a#y%^a#z%^a'u%^a([%^a(m%^a!h%^a!V%^a's%^a#]%^as%^a![%^a%f%^a!d%^a~P#.aO#h%`aP%`aR%`a[%`aa%`ao%`a!Y%`a!i%`a!m%`a#O%`a#k%`a#l%`a#m%`a#n%`a#o%`a#p%`a#q%`a#r%`a#s%`a#u%`a#w%`a#y%`a#z%`a'u%`a([%`a(m%`a!h%`a!V%`a's%`a#]%`as%`a![%`a%f%`a!d%`a~P#.aO#hzaPza[zaazaoza!iza!mza#Oza#kza#lza#mza#nza#oza#pza#qza#rza#sza#uza#wza#yza#zza'uza([za(mza!hza!Vza'szasza![za%fza!dza~P$%]O#h$qaP$qaR$qa[$qaa$qao$qa!i$qa!m$qa#O$qa#k$qa#l$qa#m$qa#n$qa#o$qa#p$qa#q$qa#r$qa#s$qa#u$qa#w$qa#y$qa#z$qa'u$qa([$qa(m$qa!h$qa!V$qa's$qas$qa![$qa%f$qa!d$qa~P$&UO#h$saP$saR$sa[$saa$sao$sa!i$sa!m$sa#O$sa#k$sa#l$sa#m$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#u$sa#w$sa#y$sa#z$sa'u$sa([$sa(m$sa!h$sa!V$sa's$sas$sa![$sa%f$sa!d$sa~P$&wO#h%RaP%RaR%Ra[%Raa%Rao%Ra!Y%Ra!i%Ra!m%Ra#O%Ra#k%Ra#l%Ra#m%Ra#n%Ra#o%Ra#p%Ra#q%Ra#r%Ra#s%Ra#u%Ra#w%Ra#y%Ra#z%Ra'u%Ra([%Ra(m%Ra!h%Ra!V%Ra's%Ra#]%Ras%Ra![%Ra%f%Ra!d%Ra~P#.aOa#`q!Y#`q'u#`q's#`q!V#`q!h#`qs#`q![#`q%f#`q!d#`q~P!9mO!X3^O!Y'UX!h'UX~P%[O!Y.lO!h(fa~O!Y.lO!h(fa~P!9mO!V3aO~O#}!ka!Z!ka~PKPO#}!ga!Y!ga!Z!ga~P#AbO#}!oa!Z!oa~P!<TO#}!qa!Z!qa~P!>kOg'XX!Y'XX~P!+hO!Y.wOg(ka~OSfO![3uO$c3vO~O!Z3zO~Os3{O~P#.aOa$lq!Y$lq'u$lq's$lq!V$lq!h$lqs$lq![$lq%f$lq!d$lq~P!9mO!V3|O~P#.aO})zO!P){O(u%POk'ea(t'ea!Y'ea#]'ea~Og'ea#}'ea~P%)nO})zO!P){Ok'ga(t'ga(u'ga!Y'ga#]'ga~Og'ga#}'ga~P%*aO(m$YO~P#.aO!VfX!V$xX!YfX!Y$xX!d%PX#]fX~P!/gO(O<QO~P!1YOmkO(O4OO~P.iO!P%fO!X4QO![%gO(O%eO!Y'aX!h'aX~O!Y/hO!h(za~O!Y/hO!d#vO!h(za~O!Y/hO!d#vO(m'mO!h(za~Og$zi!Y$zi#]$zi#}$zi~P!0kO!X4YO!V'cX!Y'cX~P!3XO!Y/pO!V({a~O!Y/pO!V({a~P#.aO!d#vO#s4bO~Oo4eO!d#vO(m'mO~O!P4hO(`!mO~O(t$}Ok%^i}%^i!P%^i(u%^i!Y%^i#]%^i~Og%^i#}%^i~P%.wO(u%POk%`i}%`i!P%`i(t%`i!Y%`i#]%`i~Og%`i#}%`i~P%/jOg(Yi!Y(Yi~P!0kO#]4mOg(Yi!Y(Yi~P!0kO!h4pO~Oa$mq!Y$mq'u$mq's$mq!V$mq!h$mqs$mq![$mq%f$mq!d$mq~P!9mO!V4tO~O!Y4uO![(|X~P#.aOa$xX![$xX%Z]X'u$xX!Y$xX~P!/gO%Z4xOalXklX}lX!PlX![lX'ulX(tlX(ulX!YlX~O%Z4xO~Ob5OO%g5PO(O+kO(QTO(TUO!Y'pX!Z'pX~O!Y0wO!Z)Ta~O[5TO~O`5UO~Oa%lO'u%lO~P#.aO![$|O~P#.aO!Y5^O#]5`O!Z)QX~O!Z5aO~Oo5hOp!nO!P5bO!_!yO!`!vO!a!vO!y;QO#Q!pO#R!pO#S!pO#T!pO#U!pO#X5gO#Y!zO(P!lO(QTO(TUO(`!mO(j!sO~O!Z5fO~P%4tOk5mO![1aO%f5lO~Oh%VOk5mO![1aO%f5lO~Ob5tO(O#nO(QTO(TUO!Y'oX!Z'oX~O!Y1lO!Z)Ra~O(QTO(TUO(`5vO~O`5zO~O#s5}O&W6OO~PMlO!h6PO~P%[Oa6RO~Oa6RO~P%[Ob2SO!Z6WO&f2RO~P`O!d6YO~O!d6[Oh(ei!Y(ei!Z(ei!d(ei!i(ei~O!Y#ei!Z#ei~P#AbO#]6]O!Y#ei!Z#ei~O!Y!^i!Z!^i~P#AbOa%lO#]6fO'u%lO~Oa%lO!d#vO#]6fO'u%lO~O!Y(oq!h(oqa(oq'u(oq~P!9mO!Y(fO!h(nq~O!P%fO![%gO#g6mO(O%eO~O![']O%f6pO~Ok6tO![']O%f6pO~O#h'eaP'eaR'ea['eaa'eao'ea!i'ea!m'ea#O'ea#k'ea#l'ea#m'ea#n'ea#o'ea#p'ea#q'ea#r'ea#s'ea#u'ea#w'ea#y'ea#z'ea'u'ea(['ea(m'ea!h'ea!V'ea's'eas'ea!['ea%f'ea!d'ea~P%)nO#h'gaP'gaR'ga['gaa'gao'ga!i'ga!m'ga#O'ga#k'ga#l'ga#m'ga#n'ga#o'ga#p'ga#q'ga#r'ga#s'ga#u'ga#w'ga#y'ga#z'ga'u'ga(['ga(m'ga!h'ga!V'ga's'gas'ga!['ga%f'ga!d'ga~P%*aO#h$ziP$ziR$zi[$zia$zio$zi!Y$zi!i$zi!m$zi#O$zi#k$zi#l$zi#m$zi#n$zi#o$zi#p$zi#q$zi#r$zi#s$zi#u$zi#w$zi#y$zi#z$zi'u$zi([$zi(m$zi!h$zi!V$zi's$zi#]$zis$zi![$zi%f$zi!d$zi~P#.aO#h%^iP%^iR%^i[%^ia%^io%^i!i%^i!m%^i#O%^i#k%^i#l%^i#m%^i#n%^i#o%^i#p%^i#q%^i#r%^i#s%^i#u%^i#w%^i#y%^i#z%^i'u%^i([%^i(m%^i!h%^i!V%^i's%^is%^i![%^i%f%^i!d%^i~P%.wO#h%`iP%`iR%`i[%`ia%`io%`i!i%`i!m%`i#O%`i#k%`i#l%`i#m%`i#n%`i#o%`i#p%`i#q%`i#r%`i#s%`i#u%`i#w%`i#y%`i#z%`i'u%`i([%`i(m%`i!h%`i!V%`i's%`is%`i![%`i%f%`i!d%`i~P%/jO!Y'Ua!h'Ua~P!9mO!Y.lO!h(fi~O#}#`i!Y#`i!Z#`i~P#AbOP$[OR#zO}#yO!P#{O!i#xO!m$[O([VO[#jio#ji#O#ji#l#ji#m#ji#n#ji#o#ji#p#ji#q#ji#r#ji#s#ji#u#ji#w#ji#y#ji#z#ji#}#ji(m#ji(t#ji(u#ji!Y#ji!Z#ji~O#k#ji~P%G^O#k;YO~P%G^OP$[OR#zOo;fO}#yO!P#{O!i#xO!m$[O#k;YO#l;ZO#m;ZO#n;ZO([VO[#ji#O#ji#p#ji#q#ji#r#ji#s#ji#u#ji#w#ji#y#ji#z#ji#}#ji(m#ji(t#ji(u#ji!Y#ji!Z#ji~O#o#ji~P%IfO#o;[O~P%IfOP$[OR#zO[;hOo;fO}#yO!P#{O!i#xO!m$[O#O;]O#k;YO#l;ZO#m;ZO#n;ZO#o;[O#p;]O#q;]O#r;gO#s;]O([VO#w#ji#y#ji#z#ji#}#ji(m#ji(t#ji(u#ji!Y#ji!Z#ji~O#u#ji~P%KnOP$[OR#zO[;hOo;fO}#yO!P#{O!i#xO!m$[O#O;]O#k;YO#l;ZO#m;ZO#n;ZO#o;[O#p;]O#q;]O#r;gO#s;]O#u;^O([VO(u#}O#y#ji#z#ji#}#ji(m#ji(t#ji!Y#ji!Z#ji~O#w;`O~P%MoO#w#ji~P%MoO#u;^O~P%KnOP$[OR#zO[;hOo;fO}#yO!P#{O!i#xO!m$[O#O;]O#k;YO#l;ZO#m;ZO#n;ZO#o;[O#p;]O#q;]O#r;gO#s;]O#u;^O#w;`O([VO(t#|O(u#}O#z#ji#}#ji(m#ji!Y#ji!Z#ji~O#y#ji~P&!OO#y;bO~P&!OOa#{y!Y#{y'u#{y's#{y!V#{y!h#{ys#{y![#{y%f#{y!d#{y~P!9mO[#jio#ji#O#ji#o#ji#p#ji#q#ji#r#ji#s#ji#u#ji#w#ji#y#ji#z#ji#}#ji(m#ji!Y#ji!Z#ji~OP$[OR#zO}#yO!P#{O!i#xO!m$[O#k;YO#l;ZO#m;ZO#n;ZO([VO(t#ji(u#ji~P&$zOk=VO})zO!P){O(t$}O(u%POP#jiR#ji!i#ji!m#ji#k#ji#l#ji#m#ji#n#ji([#ji~P&$zO#P$dOP(ZXR(ZX[(ZXk(ZXo(ZX}(ZX!P(ZX!i(ZX!m(ZX#O(ZX#k(ZX#l(ZX#m(ZX#n(ZX#o(ZX#p(ZX#q(ZX#r(ZX#s(ZX#u(ZX#w(ZX#y(ZX#z(ZX#}(ZX([(ZX(m(ZX(t(ZX(u(ZX!Y(ZX!Z(ZX~O#}$Oi!Y$Oi!Z$Oi~P#AbO#}!oi!Z!oi~P$(fOg'Xa!Y'Xa~P!0kO!Z7WO~O!Y'`a!Z'`a~P#AbOP]XR]X[]Xo]X}]X!P]X!V]X!Y]X!i]X!m]X#O]X#P]X#]]X#hfX#k]X#l]X#m]X#n]X#o]X#p]X#q]X#r]X#s]X#u]X#w]X#y]X#z]X$P]X([]X(m]X(t]X(u]X~O!d%WX#s%WX~P&+QO!d#vO(m'mO!Y'aa!h'aa~O!Y/hO!h(zi~O!Y/hO!d#vO!h(zi~Og$zq!Y$zq#]$zq#}$zq~P!0kO!V'ca!Y'ca~P#.aO!d7_O~O!Y/pO!V({i~P#.aO!Y/pO!V({i~O!V7cO~O!d#vO#s7hO~Oo7iO!d#vO(m'mO~O})zO!P){O(u%POk'fa(t'fa!Y'fa#]'fa~Og'fa#}'fa~P&/pO})zO!P){Ok'ha(t'ha(u'ha!Y'ha#]'ha~Og'ha#}'ha~P&0cO!V7lO~Og$|q!Y$|q#]$|q#}$|q~P!0kOa$my!Y$my'u$my's$my!V$my!h$mys$my![$my%f$my!d$my~P!9mO!d6[O~O!Y4uO![(|a~O![']OP$SaR$Sa[$Sao$Sa}$Sa!P$Sa!Y$Sa!i$Sa!m$Sa#O$Sa#k$Sa#l$Sa#m$Sa#n$Sa#o$Sa#p$Sa#q$Sa#r$Sa#s$Sa#u$Sa#w$Sa#y$Sa#z$Sa([$Sa(m$Sa(t$Sa(u$Sa~O%f6pO~P&2lOa#`y!Y#`y'u#`y's#`y!V#`y!h#`ys#`y![#`y%f#`y!d#`y~P!9mO[7qO~Ob7sO(O+kO(QTO(TUO~O!Y0wO!Z)Ti~O`7wO~O(`(xO!Y'lX!Z'lX~O!Y5^O!Z)Qa~O!Z8QO~P%4tOp!nO!P8RO(QTO(TUO(`!mO(j!sO~O#X8SO~O![1aO~O![1aO%f8UO~Ok8XO![1aO%f8UO~O[8^O!Y'oa!Z'oa~O!Y1lO!Z)Ri~O!h8bO~O!h8cO~O!h8fO~O!h8fO~P%[Oa8hO~O!d8iO~O!h8jO~O!Y(ri!Z(ri~P#AbOa%lO#]8rO'u%lO~O!Y(oy!h(oya(oy'u(oy~P!9mO!Y(fO!h(ny~O%f8uO~P&2lO![']O%f8uO~O#h$zqP$zqR$zq[$zqa$zqo$zq!Y$zq!i$zq!m$zq#O$zq#k$zq#l$zq#m$zq#n$zq#o$zq#p$zq#q$zq#r$zq#s$zq#u$zq#w$zq#y$zq#z$zq'u$zq([$zq(m$zq!h$zq!V$zq's$zq#]$zqs$zq![$zq%f$zq!d$zq~P#.aO#h'faP'faR'fa['faa'fao'fa!i'fa!m'fa#O'fa#k'fa#l'fa#m'fa#n'fa#o'fa#p'fa#q'fa#r'fa#s'fa#u'fa#w'fa#y'fa#z'fa'u'fa(['fa(m'fa!h'fa!V'fa's'fas'fa!['fa%f'fa!d'fa~P&/pO#h'haP'haR'ha['haa'hao'ha!i'ha!m'ha#O'ha#k'ha#l'ha#m'ha#n'ha#o'ha#p'ha#q'ha#r'ha#s'ha#u'ha#w'ha#y'ha#z'ha'u'ha(['ha(m'ha!h'ha!V'ha's'has'ha!['ha%f'ha!d'ha~P&0cO#h$|qP$|qR$|q[$|qa$|qo$|q!Y$|q!i$|q!m$|q#O$|q#k$|q#l$|q#m$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#u$|q#w$|q#y$|q#z$|q'u$|q([$|q(m$|q!h$|q!V$|q's$|q#]$|qs$|q![$|q%f$|q!d$|q~P#.aO!Y'Ui!h'Ui~P!9mO#}#`q!Y#`q!Z#`q~P#AbO(t$}OP%^aR%^a[%^ao%^a!i%^a!m%^a#O%^a#k%^a#l%^a#m%^a#n%^a#o%^a#p%^a#q%^a#r%^a#s%^a#u%^a#w%^a#y%^a#z%^a#}%^a([%^a(m%^a!Y%^a!Z%^a~Ok%^a}%^a!P%^a(u%^a~P&CoO(u%POP%`aR%`a[%`ao%`a!i%`a!m%`a#O%`a#k%`a#l%`a#m%`a#n%`a#o%`a#p%`a#q%`a#r%`a#s%`a#u%`a#w%`a#y%`a#z%`a#}%`a([%`a(m%`a!Y%`a!Z%`a~Ok%`a}%`a!P%`a(t%`a~P&EsOk=VO})zO!P){O(u%PO~P&CoOk=VO})zO!P){O(t$}O~P&EsOR0`O}0`O!P0aO#P$dOPza[zakzaoza!iza!mza#Oza#kza#lza#mza#nza#oza#pza#qza#rza#sza#uza#wza#yza#zza#}za([za(mza(tza(uza!Yza!Zza~O})zO!P){OP$qaR$qa[$qak$qao$qa!i$qa!m$qa#O$qa#k$qa#l$qa#m$qa#n$qa#o$qa#p$qa#q$qa#r$qa#s$qa#u$qa#w$qa#y$qa#z$qa#}$qa([$qa(m$qa(t$qa(u$qa!Y$qa!Z$qa~O})zO!P){OP$saR$sa[$sak$sao$sa!i$sa!m$sa#O$sa#k$sa#l$sa#m$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#u$sa#w$sa#y$sa#z$sa#}$sa([$sa(m$sa(t$sa(u$sa!Y$sa!Z$sa~Ok=VO})zO!P){O(t$}O(u%PO~OP%RaR%Ra[%Rao%Ra!i%Ra!m%Ra#O%Ra#k%Ra#l%Ra#m%Ra#n%Ra#o%Ra#p%Ra#q%Ra#r%Ra#s%Ra#u%Ra#w%Ra#y%Ra#z%Ra#}%Ra([%Ra(m%Ra!Y%Ra!Z%Ra~P&NlO#}$lq!Y$lq!Z$lq~P#AbO#}$mq!Y$mq!Z$mq~P#AbO!Z9SO~O#}9TO~P!0kO!d#vO!Y'ai!h'ai~O!d#vO(m'mO!Y'ai!h'ai~O!Y/hO!h(zq~O!V'ci!Y'ci~P#.aO!Y/pO!V({q~Oo9[O!d#vO(m'mO~O!V9]O~P#.aO!V9]O~O!d#vO#s9bO~Og(Yy!Y(Yy~P!0kO!Y'ja!['ja~P#.aOa%Yq![%Yq'u%Yq!Y%Yq~P#.aO[9dO~O!Y0wO!Z)Tq~O#]9hO!Y'la!Z'la~O!Y5^O!Z)Qi~P#AbO!P4hO~O![1aO%f9lO~O(QTO(TUO(`9qO~O!Y1lO!Z)Rq~O!h9tO~O!h9uO~O!h9vO~O!h9vO~P%[O#]9yO!Y#ey!Z#ey~O!Y#ey!Z#ey~P#AbO%f:OO~P&2lO![']O%f:OO~O#}#{y!Y#{y!Z#{y~P#AbOP$ziR$zi[$zio$zi!i$zi!m$zi#O$zi#k$zi#l$zi#m$zi#n$zi#o$zi#p$zi#q$zi#r$zi#s$zi#u$zi#w$zi#y$zi#z$zi#}$zi([$zi(m$zi!Y$zi!Z$zi~P&NlO})zO!P){O(u%POP'eaR'ea['eak'eao'ea!i'ea!m'ea#O'ea#k'ea#l'ea#m'ea#n'ea#o'ea#p'ea#q'ea#r'ea#s'ea#u'ea#w'ea#y'ea#z'ea#}'ea(['ea(m'ea(t'ea!Y'ea!Z'ea~O})zO!P){OP'gaR'ga['gak'gao'ga!i'ga!m'ga#O'ga#k'ga#l'ga#m'ga#n'ga#o'ga#p'ga#q'ga#r'ga#s'ga#u'ga#w'ga#y'ga#z'ga#}'ga(['ga(m'ga(t'ga(u'ga!Y'ga!Z'ga~O(t$}OP%^iR%^i[%^ik%^io%^i}%^i!P%^i!i%^i!m%^i#O%^i#k%^i#l%^i#m%^i#n%^i#o%^i#p%^i#q%^i#r%^i#s%^i#u%^i#w%^i#y%^i#z%^i#}%^i([%^i(m%^i(u%^i!Y%^i!Z%^i~O(u%POP%`iR%`i[%`ik%`io%`i}%`i!P%`i!i%`i!m%`i#O%`i#k%`i#l%`i#m%`i#n%`i#o%`i#p%`i#q%`i#r%`i#s%`i#u%`i#w%`i#y%`i#z%`i#}%`i([%`i(m%`i(t%`i!Y%`i!Z%`i~O#}$my!Y$my!Z$my~P#AbO#}#`y!Y#`y!Z#`y~P#AbO!d#vO!Y'aq!h'aq~O!Y/hO!h(zy~O!V'cq!Y'cq~P#.aOo:YO!d#vO(m'mO~O!V:ZO~P#.aO!V:ZO~O!Y0wO!Z)Ty~O!Y5^O!Z)Qq~O![1aO%f:cO~O!h:fO~O%f:kO~P&2lOP$zqR$zq[$zqo$zq!i$zq!m$zq#O$zq#k$zq#l$zq#m$zq#n$zq#o$zq#p$zq#q$zq#r$zq#s$zq#u$zq#w$zq#y$zq#z$zq#}$zq([$zq(m$zq!Y$zq!Z$zq~P&NlO})zO!P){O(u%POP'faR'fa['fak'fao'fa!i'fa!m'fa#O'fa#k'fa#l'fa#m'fa#n'fa#o'fa#p'fa#q'fa#r'fa#s'fa#u'fa#w'fa#y'fa#z'fa#}'fa(['fa(m'fa(t'fa!Y'fa!Z'fa~O})zO!P){OP'haR'ha['hak'hao'ha!i'ha!m'ha#O'ha#k'ha#l'ha#m'ha#n'ha#o'ha#p'ha#q'ha#r'ha#s'ha#u'ha#w'ha#y'ha#z'ha#}'ha(['ha(m'ha(t'ha(u'ha!Y'ha!Z'ha~OP$|qR$|q[$|qo$|q!i$|q!m$|q#O$|q#k$|q#l$|q#m$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#u$|q#w$|q#y$|q#z$|q#}$|q([$|q(m$|q!Y$|q!Z$|q~P&NlOg%b!Z!Y%b!Z#]%b!Z#}%b!Z~P!0kOo:oO!d#vO(m'mO~O!V:pO~P#.aO!Y'lq!Z'lq~P#AbO!Y#e!Z!Z#e!Z~P#AbO#h%b!ZP%b!ZR%b!Z[%b!Za%b!Zo%b!Z!Y%b!Z!i%b!Z!m%b!Z#O%b!Z#k%b!Z#l%b!Z#m%b!Z#n%b!Z#o%b!Z#p%b!Z#q%b!Z#r%b!Z#s%b!Z#u%b!Z#w%b!Z#y%b!Z#z%b!Z'u%b!Z([%b!Z(m%b!Z!h%b!Z!V%b!Z's%b!Z#]%b!Zs%b!Z![%b!Z%f%b!Z!d%b!Z~P#.aOo:xO!d#vO(m'mO~OP%b!ZR%b!Z[%b!Zo%b!Z!i%b!Z!m%b!Z#O%b!Z#k%b!Z#l%b!Z#m%b!Z#n%b!Z#o%b!Z#p%b!Z#q%b!Z#r%b!Z#s%b!Z#u%b!Z#w%b!Z#y%b!Z#z%b!Z#}%b!Z([%b!Z(m%b!Z!Y%b!Z!Z%b!Z~P&NlOs(aX~P1qO}%pO~P!(oO(P!lO~P!(oO!VfX!YfX#]fX~P&+QOP]XR]X[]Xo]X}]X!P]X!Y]X!YfX!i]X!m]X#O]X#P]X#]]X#]fX#hfX#k]X#l]X#m]X#n]X#o]X#p]X#q]X#r]X#s]X#u]X#w]X#y]X#z]X$P]X([]X(m]X(t]X(u]X~O!dfX!h]X!hfX(mfX~P'BxOP;POQ;POSfOd<zOe!iOmkOo;POpkOqkOwkOy;PO{;PO!PWO!TkO!UkO![XO!f;SO!iZO!l;PO!m;PO!n;PO!p;TO!r;WO!u!hO$V!kO(O)XO(QTO(TUO([VO(j[O(y<xO~O!Y;dO!Z$oa~Oh%VOm%WOo%XOp$tOq$tOw%YOy%ZO{;oO!P${O![$|O!f=PO!i$xO#g;uO$V%_O$r;qO$t;sO$w%`O(O(rO(QTO(TUO([$uO(t$}O(u%PO~O#t)`O~P'GnOo!bX(m!bX~P# ZO!Z]X!ZfX~P'BxO!VfX!V$xX!YfX!Y$xX#]fX~P!/gO#h;XO~O!d#vO#h;XO~O#];iO~O#s;]O~O#];xO!Y(rX!Z(rX~O#];iO!Y(pX!Z(pX~O#h;yO~Og;{O~P!0kO#h<RO~O#h<SO~O!d#vO#h<TO~O!d#vO#h;yO~O#}<UO~P#AbO#h<VO~O#h<WO~O#h<]O~O#h<^O~O#h<_O~O#h<`O~O#}<aO~P!0kO#}<bO~P!0kO#P#Q#R#T#U#X#f#g#r(y$r$t$w%Z%e%f%g%n%p%s%t%v%x~'yT#l!U'w(P#mp#k#no}'x$['x(O$^(`~",goto:"$4Q)XPPPPPP)YPP)]P)nP+O/PPPPP5xPP6`PP<V?mP@QP@QPPP@QPBRP@QP@QP@QPBVPB[PByPGrPPPGvPPPPGvJxPPPKOKzPGvPGvPPNYGvPPPGvPGvP!!aGvP!%v!&{!'UP!'x!'|!'x!+YPPPPPPP!+y!&{PP!,Z!-gP!0jGvGv!0o!3z!8b!8b!<`PPP!<hGvPPPPPPPPPPP!?vP!ATPPGv!BfPGvPGvGvGvGvGvPGv!CxP!GRP!JWP!J[!Jf!Jj!JjP!GOP!Jn!JnP!MsP!MwGvGv!M}##RBV@QP@QP@Q@QP#$_@Q@Q#&j@Q#)Z@Q#+`@Q@Q#,O#.]#.]#.b#.k#.]#.wP#.]P@Q#/a@Q#3S@Q@Q5xPPP#6{PPP#7f#7fP#7fP#7|#7fPP#8SP#7yP#7y#8g#7y#9R#9X5u)]#9[)]P#9c#9c#9cP)]P)]P)]P)]PP)]P#9i#9lP#9l)]P#9pP#9sP)]P)]P)]P)]P)]P)])]PP#9y#:P#:[#:b#:h#:n#:t#;S#;Y#;d#;j#;t#;z#<[#<b#=S#=f#=l#=r#>Q#>g#@V#@e#@l#BR#Ba#C|#D[#Db#Dh#Dn#Dx#EO#EU#E`#Er#ExPPPPPPPPPP#FOPPPPPPP#Fs#Iz#KZ#Kb#KjPPP$!sP$!|$%t$,^$,a$,d$-P$-S$-Z$-cP$-i$-lP$.Y$.^$/U$0d$0i$1PPP$1U$1[$1`P$1c$1g$1k$2a$2x$3a$3e$3h$3k$3q$3t$3x$3|R!|RoqOXst!Z#d%k&o&q&r&t,k,p1|2PY!vQ']-]1a5eQ%rvQ%zyQ&R|Q&g!VS'T!e-TQ'c!iS'i!r!yU*e$|*V*jQ+i%{Q+v&TQ,[&aQ-Z'[Q-e'dQ-m'jQ0R*lQ1k,]R;v;T%QdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%k%r&P&h&k&o&q&r&t&x'Q'_'o(P(R(X(`(t(v(z)y+R+V,h,k,p-a-i-w-}.l.s/f0a0g0v1d1t1u1w1y1|2P2R2r2x3^5b5m5}6O6R6f8R8X8h8rS#q];Q!r)Z$Z$n'U)o,|-P.}2b3u5`6]9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{U*y%[;n;oQ+n%}Q,^&dQ,e&lQ0m+aQ0q+cQ0|+oQ1s,cQ3Q._Q5O0wQ5t1lQ6r3UQ7s5PR8x6t'OkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%k%r&P&h&k&l&o&q&r&t&x'Q'U'_'o(P(R(X(`(t(v(z)o)y+R+V+a,h,k,p,|-P-a-i-w-}._.l.s.}/f0a0g0v1d1t1u1w1y1|2P2R2b2r2x3U3^3u5`5b5m5}6O6R6]6f6t8R8X8h8r9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{t!nQ!r!v!y!z'T'[']'i'j'k-T-Z-]-m1a5e5g$|$ti#v$b$c$d$x${%O%Q%]%^%b)u){)}*P*R*U*[*b*r*s+`+c+z+}.^.w/]/e/o/p/r0V0X0d1W1Z1c3T3}4Y4b4m4u4x5l6p7_7h8U8u9T9b9l:O:c:k;g;h;j;k;l;m;p;q;r;s;t;u;|;}<O<P<R<S<V<W<X<Y<Z<[<]<^<a<b<x=Q=R=U=VQ&U|Q'R!eU'X%g*V-WQ+n%}Q,^&dQ0c*|Q0|+oQ1R+uQ1r,bQ1s,cQ5O0wQ5X1TQ5t1lQ5w1nQ5x1qQ7s5PQ7v5UQ8a5zQ9g7wR9r8^rnOXst!V!Z#d%k&f&o&q&r&t,k,p1|2PR,`&h&x^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%k%r&P&h&k&l&o&q&r&t&x'Q'_'o(R(X(`(t(v(z)o)y+R+V+a,h,k,p,|-P-a-i-w-}._.l.s.}/f0a0g0v1d1t1u1w1y1|2P2R2b2r2x3U3^3u5`5b5m5}6O6R6]6f6t8R8X8h8r9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<z<{[#]WZ#W#Z'U(P!b%hm#h#i#l$x%c%f(Y(d(e(f*U*Y*]+T+U+W,g,}-{.R.S.T.V/e/h2U2|2}4Q6[6mQ%uxQ%yyS&O|&TQ&[!TQ'`!hQ'b!iQ(m#sS+h%z%{Q+l%}Q,V&_Q,Z&aS-d'c'dQ.a(nQ0u+iQ0{+oQ0}+pQ1Q+tQ1f,WS1j,[,]Q2n-eQ4}0wQ5R0zQ5W1SQ5s1kQ7r5PQ7u5TQ9c7qR:^9d!O$zi$d%O%Q%]%^%b)}*P*[*r*s.w/o0V0X0d3}4m9T<x=Q=R!S%wy!i!u%y%z%{'S'b'c'd'h'r*d+h+i-Q-d-e-l/y0u2g2n2u4dQ+b%uQ+{&XQ,O&YQ,Y&aQ.`(mQ1e,VU1i,Z,[,]Q3V.aQ5n1fS5r1j1kQ8]5s#^<|#v$b$c$x${)u){*R*U*b+`+c+z+}.^/]/e/p/r1W1Z1c3T4Y4b4u4x5l6p7_7h8U8u9b9l:O:c:k;j;l;p;r;t;|<O<R<V<X<Z<]<a=U=Vo<};g;h;k;m;q;s;u;}<P<S<W<Y<[<^<bW%Ti%V*t<xS&X!Q&fQ&Y!RQ&Z!SR+y&V$}%Si#v$b$c$d$x${%O%Q%]%^%b)u){)}*P*R*U*[*b*r*s+`+c+z+}.^.w/]/e/o/p/r0V0X0d1W1Z1c3T3}4Y4b4m4u4x5l6p7_7h8U8u9T9b9l:O:c:k;g;h;j;k;l;m;p;q;r;s;t;u;|;}<O<P<R<S<V<W<X<Y<Z<[<]<^<a<b<x=Q=R=U=VT)v$u)wV*y%[;n;oW'X!e%g*V-WS(y#y#zQ+]%pQ+s&QS.Y(i(jQ1[,PQ4n0`R7{5^'OkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%k%r&P&h&k&l&o&q&r&t&x'Q'U'_'o(P(R(X(`(t(v(z)o)y+R+V+a,h,k,p,|-P-a-i-w-}._.l.s.}/f0a0g0v1d1t1u1w1y1|2P2R2b2r2x3U3^3u5`5b5m5}6O6R6]6f6t8R8X8h8r9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{$i$^c#Y#e%o%q%s(O(U(p(u(})O)P)Q)R)S)T)U)V)W)Y)[)^)c)m+^+r-R-p-u-z-|.k.n.r.t.u.v/X0e2]2`2p2w3]3b3c3d3e3f3g3h3i3j3k3l3m3n3q3r3y4r4{6_6e6j6y6z7T7U7}8l8p8z9Q9R9{:`:g;R<oT#TV#U'PkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%k%r&P&h&k&l&o&q&r&t&x'Q'U'_'o(P(R(X(`(t(v(z)o)y+R+V+a,h,k,p,|-P-a-i-w-}._.l.s.}/f0a0g0v1d1t1u1w1y1|2P2R2b2r2x3U3^3u5`5b5m5}6O6R6]6f6t8R8X8h8r9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{Q'V!eR2c-Tv!nQ!e!r!v!y!z'T'[']'i'j'k-T-Z-]-m1a5e5gU*d$|*V*jS/y*e*lQ0S*mQ1^,RQ4d0RR4g0UnqOXst!Z#d%k&o&q&r&t,k,p1|2PQ&v!^Q's!xS(o#u;XQ+f%xQ,T&[Q,U&^Q-b'aQ-o'lS.j(t;yS0f+R<TQ0s+gQ1`,SQ2T,rQ2V,sQ2_-OQ2l-cQ2o-gS4s0g<_Q4y0tS4|0v<`Q6^2aQ6b2mQ6g2tQ7p4zQ8m6`Q8n6cQ8q6hR9x8j$d$]c#Y#e%q%s(O(U(p(u(})O)P)Q)R)S)T)U)V)W)Y)[)^)c)m+^+r-R-p-u-z-|.k.n.r.u.v/X0e2]2`2p2w3]3b3c3d3e3f3g3h3i3j3k3l3m3n3q3r3y4r4{6_6e6j6y6z7T7U7}8l8p8z9Q9R9{:`:g;R<oS(k#p'fQ({#zS+[%o.tS.Z(j(lR3O.['OkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%k%r&P&h&k&l&o&q&r&t&x'Q'U'_'o(P(R(X(`(t(v(z)o)y+R+V+a,h,k,p,|-P-a-i-w-}._.l.s.}/f0a0g0v1d1t1u1w1y1|2P2R2b2r2x3U3^3u5`5b5m5}6O6R6]6f6t8R8X8h8r9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{S#q];QQ&q!XQ&r!YQ&t![Q&u!]R1{,nQ'^!hQ+_%uQ-`'`S.](m+bQ2j-_W3S.`.a0l0nQ6a2kW6n3P3R3V4wU8t6o6q6sU9}8v8w8yS:i9|:PQ:t:jR:z:uU!wQ']-]T5c1a5e!Q_OXZ`st!V!Z#d#h%c%k&f&h&o&q&r&t(f,k,p.S1|2P]!pQ!r']-]1a5eT#q];Q%[{OPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%k%r&P&h&k&l&o&q&r&t&x'Q'_'o(P(R(X(`(t(v(z)y+R+V+a,h,k,p-a-i-w-}._.l.s/f0a0g0v1d1t1u1w1y1|2P2R2r2x3U3^5b5m5}6O6R6f6t8R8X8h8rS(y#y#zS.Y(i(j!s<f$Z$n'U)o,|-P.}2b3u5`6]9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{U$fd)Z,eS(l#p'fU*q%R(s3pU0b*x.f7PQ4w0mQ6o3QQ8w6rR:P8xm!tQ!r!v!y!z']'i'j'k-]-m1a5e5gQ'q!uS(b#g1vS-k'h'tQ/k*XQ/w*dQ2v-nQ4U/lS4_/x0SQ7Z4PS7f4e4gQ9V7[Q9Z7cQ9`7iS:X9[9]S:n:Y:ZS:w:o:pR:}:xQ#wbQ'p!uS(a#g1vS(c#m+QQ+S%dQ+d%vQ+j%|U-j'h'q'tQ.O(bQ/j*XQ/v*dQ/|*gQ0r+eQ1g,XS2s-k-nQ2{.WS4T/k/lS4^/w0SQ4a/{Q4c/}Q5p1hQ6i2vQ7Y4PQ7^4US7b4_4gQ7g4fQ8Z5qS9U7Z7[Q9Y7cQ9^7fQ9a7jQ9o8[Q:V9VS:W9Z9]Q:[9`Q:e9pS:m:X:ZS:v:n:pQ:|:wQ;O:}Q<i<dQ<t<mR<u<nV!wQ']-]%[aOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%k%r&P&h&k&l&o&q&r&t&x'Q'_'o(P(R(X(`(t(v(z)y+R+V+a,h,k,p-a-i-w-}._.l.s/f0a0g0v1d1t1u1w1y1|2P2R2r2x3U3^5b5m5}6O6R6f6t8R8X8h8rS#wz!j!r<c$Z$n'U)o,|-P.}2b3u5`6]9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{R<i<z%[bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%k%r&P&h&k&l&o&q&r&t&x'Q'_'o(P(R(X(`(t(v(z)y+R+V+a,h,k,p-a-i-w-}._.l.s/f0a0g0v1d1t1u1w1y1|2P2R2r2x3U3^5b5m5}6O6R6f6t8R8X8h8rQ%dj!S%vy!i!u%y%z%{'S'b'c'd'h'r*d+h+i-Q-d-e-l/y0u2g2n2u4dS%|z!jQ+e%wQ,X&aW1h,Y,Z,[,]U5q1i1j1kS8[5r5sQ9p8]!r<d$Z$n'U)o,|-P.}2b3u5`6]9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{Q<m<yR<n<z%OeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%k%r&P&h&k&o&q&r&t&x'Q'_'o(R(X(`(t(v(z)y+R+V+a,h,k,p-a-i-w-}._.l.s/f0a0g0v1d1t1u1w1y1|2P2R2r2x3U3^5b5m5}6O6R6f6t8R8X8h8rY#bWZ#W#Z(P!b%hm#h#i#l$x%c%f(Y(d(e(f*U*Y*]+T+U+W,g,}-{.R.S.T.V/e/h2U2|2}4Q6[6mQ,f&l!p<e$Z$n)o,|-P.}2b3u5`6]9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{R<h'UU'Y!e%g*VR2e-W%QdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%k%r&P&h&k&o&q&r&t&x'Q'_'o(P(R(X(`(t(v(z)y+R+V,h,k,p-a-i-w-}.l.s/f0a0g0v1d1t1u1w1y1|2P2R2r2x3^5b5m5}6O6R6f8R8X8h8r!r)Z$Z$n'U)o,|-P.}2b3u5`6]9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{Q,e&lQ0m+aQ3Q._Q6r3UR8x6t!b$Tc#Y%o(O(U(p(u)V)W)[)c+r-p-u-z-|.k.n/X0e2p2w3]3m4r4{6e6j6y8p9{;R!P;_)Y)m-R.t2]2`3b3k3l3q3y6_6z7T7U7}8l8z9Q9R:`:g<o!f$Vc#Y%o(O(U(p(u)S)T)V)W)[)c+r-p-u-z-|.k.n/X0e2p2w3]3m4r4{6e6j6y8p9{;R!T;a)Y)m-R.t2]2`3b3h3i3k3l3q3y6_6z7T7U7}8l8z9Q9R:`:g<o!^$Zc#Y%o(O(U(p(u)[)c+r-p-u-z-|.k.n/X0e2p2w3]3m4r4{6e6j6y8p9{;RQ3}/cz<{)Y)m-R.t2]2`3b3q3y6_6z7T7U7}8l8z9Q9R:`:g<oQ=Q=SR=R=T'OkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%k%r&P&h&k&l&o&q&r&t&x'Q'U'_'o(P(R(X(`(t(v(z)o)y+R+V+a,h,k,p,|-P-a-i-w-}._.l.s.}/f0a0g0v1d1t1u1w1y1|2P2R2b2r2x3U3^3u5`5b5m5}6O6R6]6f6t8R8X8h8r9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{S$oh$pR3v.|'VgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%k%r&P&h&k&l&o&q&r&t&x'Q'U'_'o(P(R(X(`(t(v(z)o)y+R+V+a,h,k,p,|-P-a-i-w-}._.l.s.|.}/f0a0g0v1d1t1u1w1y1|2P2R2b2r2x3U3^3u5`5b5m5}6O6R6]6f6t8R8X8h8r9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{T$kf$qQ$ifS)f$l)jR)r$qT$jf$qT)h$l)j'VhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%k%r&P&h&k&l&o&q&r&t&x'Q'U'_'o(P(R(X(`(t(v(z)o)y+R+V+a,h,k,p,|-P-a-i-w-}._.l.s.|.}/f0a0g0v1d1t1u1w1y1|2P2R2b2r2x3U3^3u5`5b5m5}6O6R6]6f6t8R8X8h8r9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{T$oh$pQ$rhR)q$p%[jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%k%r&P&h&k&l&o&q&r&t&x'Q'_'o(P(R(X(`(t(v(z)y+R+V+a,h,k,p-a-i-w-}._.l.s/f0a0g0v1d1t1u1w1y1|2P2R2r2x3U3^5b5m5}6O6R6f6t8R8X8h8r!s<y$Z$n'U)o,|-P.}2b3u5`6]9h9y;P;S;T;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;i;v;x;y;{<T<U<_<`<{#elOPXZst!Z!`!o#S#d#o#{$n%k&h&k&l&o&q&r&t&x'Q'_(z)o+V+a,h,k,p-a._.}/f0a1d1t1u1w1y1|2P2R3U3u5b5m5}6O6R6t8R8X8h!O%Ri$d%O%Q%]%^%b)}*P*[*r*s.w/o0V0X0d3}4m9T<x=Q=R#^(s#v$b$c$x${)u){*R*U*b+`+c+z+}.^/]/e/p/r1W1Z1c3T4Y4b4u4x5l6p7_7h8U8u9b9l:O:c:k;j;l;p;r;t;|<O<R<V<X<Z<]<a=U=VQ*}%`Q/Y)zo3p;g;h;k;m;q;s;u;}<P<S<W<Y<[<^<b!O$yi$d%O%Q%]%^%b)}*P*[*r*s.w/o0V0X0d3}4m9T<x=Q=RQ*^$zU*g$|*V*jQ+O%aQ/}*h#^<k#v$b$c$x${)u){*R*U*b+`+c+z+}.^/]/e/p/r1W1Z1c3T4Y4b4u4x5l6p7_7h8U8u9b9l:O:c:k;j;l;p;r;t;|<O<R<V<X<Z<]<a=U=Vn<l;g;h;k;m;q;s;u;}<P<S<W<Y<[<^<bQ<p<|Q<q<}Q<r=OR<s=P!O%Ri$d%O%Q%]%^%b)}*P*[*r*s.w/o0V0X0d3}4m9T<x=Q=R#^(s#v$b$c$x${)u){*R*U*b+`+c+z+}.^/]/e/p/r1W1Z1c3T4Y4b4u4x5l6p7_7h8U8u9b9l:O:c:k;j;l;p;r;t;|<O<R<V<X<Z<]<a=U=Vo3p;g;h;k;m;q;s;u;}<P<S<W<Y<[<^<bnoOXst!Z#d%k&o&q&r&t,k,p1|2PS*a${*UQ,y&{Q,z&}R4X/p$|%Si#v$b$c$d$x${%O%Q%]%^%b)u){)}*P*R*U*[*b*r*s+`+c+z+}.^.w/]/e/o/p/r0V0X0d1W1Z1c3T3}4Y4b4m4u4x5l6p7_7h8U8u9T9b9l:O:c:k;g;h;j;k;l;m;p;q;r;s;t;u;|;}<O<P<R<S<V<W<X<Y<Z<[<]<^<a<b<x=Q=R=U=VQ+|&YQ1Y,OQ5[1XR7z5]V*i$|*V*jU*i$|*V*jT5d1a5eU/{*f/f5bS4f0T8RR7j4hQ+d%vQ/|*gQ0r+eQ1g,XQ5p1hQ8Z5qQ9o8[R:e9p!O%Oi$d%O%Q%]%^%b)}*P*[*r*s.w/o0V0X0d3}4m9T<x=Q=Rr)}$v)a*O*p+P/n0Z0[3s4V4q7X7k:U<j<v<wS0V*o0W#^;j#v$b$c$x${)u){*R*U*b+`+c+z+}.^/]/e/p/r1W1Z1c3T4Y4b4u4x5l6p7_7h8U8u9b9l:O:c:k;j;l;p;r;t;|<O<R<V<X<Z<]<a=U=Vn;k;g;h;k;m;q;s;u;}<P<S<W<Y<[<^<b!`;|(q)_*W*`.b.e.i/U/Z/c/s0k1V1X3Y4W4[5Z5]6u6x7`7d7m7o9X9_:]:l=S=T`;}3o6{7O7S8{:Q:T:{S<X.d3ZT<Y6}9O!O%Qi$d%O%Q%]%^%b)}*P*[*r*s.w/o0V0X0d3}4m9T<x=Q=Rv*P$v)a*Q*o+P/_/n0Z0[3s4V4i4q7X7k:U<j<v<wS0X*p0Y#^;l#v$b$c$x${)u){*R*U*b+`+c+z+}.^/]/e/p/r1W1Z1c3T4Y4b4u4x5l6p7_7h8U8u9b9l:O:c:k;j;l;p;r;t;|<O<R<V<X<Z<]<a=U=Vn;m;g;h;k;m;q;s;u;}<P<S<W<Y<[<^<b!d<O(q)_*W*`.c.d.i/U/Z/c/s0k1V1X3W3Y4W4[5Z5]6u6v6x7`7d7m7o9X9_:]:l=S=Td<P3o6|6}7S8{8|:Q:R:T:{S<Z.e3[T<[7O9PrnOXst!V!Z#d%k&f&o&q&r&t,k,p1|2PQ&c!UR,h&lrnOXst!V!Z#d%k&f&o&q&r&t,k,p1|2PR&c!UQ,Q&ZR1U+ysnOXst!V!Z#d%k&f&o&q&r&t,k,p1|2PQ1b,VS5k1e1fU8T5i5j5nS9k8V8WS:a9j9mQ:q:bR:y:rQ&j!VR,a&fR5w1nS&O|&TR0}+pQ&o!WR,k&pR,q&uT1},p2PR,u&vQ,t&vR2W,uQ'v!{R-q'vSsOtQ#dXT%ns#dQ#OTR'x#OQ#RUR'z#RQ)w$uR/V)wQ#UVR'|#UQ#XWU(S#X(T-xQ(T#YR-x(UQ-U'VR2d-UQ.m(uS3_.m3`R3`.nQ-]']R2h-]Y!rQ']-]1a5eR'g!rQ.x)aR3t.xU#_W%f*UU(Z#_([-yQ([#`R-y(VQ-X'YR2f-Xt`OXst!V!Z#d%k&f&h&o&q&r&t,k,p1|2PS#hZ%cU#r`#h.SR.S(fQ(g#jQ.P(cW.X(g.P2y6kQ2y.QR6k2zQ)j$lR/O)jQ$phR)p$pQ$`cU)]$`-t;eQ-t;RR;e)mQ/i*XW4R/i4S7]9WU4S/j/k/lS7]4T4UR9W7^$Z)|$v(q)_)a*W*`*o*p*z*{+P.d.e.g.h.i/U/Z/_/a/c/n/s0Z0[0k1V1X3W3X3Y3o3s4V4W4[4i4k4q5Z5]6u6v6w6x6}7O7Q7R7S7X7`7d7k7m7o8{8|8}9X9_:Q:R:S:T:U:]:l:{<j<v<w=S=TQ/q*`U4Z/q4]7aQ4]/sR7a4[S*j$|*VR0P*jr*O$v)a*o*p+P/n0Z0[3s4V4q7X7k:U<j<v<w!`.b(q)_*W*`.d.e.i/U/Z/c/s0k1V1X3Y4W4[5Z5]6u6x7`7d7m7o9X9_:]:l=S=TU/`*O.b6{a6{3o6}7O7S8{:Q:T:{Q0W*oQ3Z.dU4j0W3Z9OR9O6}v*Q$v)a*o*p+P/_/n0Z0[3s4V4i4q7X7k:U<j<v<w!d.c(q)_*W*`.d.e.i/U/Z/c/s0k1V1X3W3Y4W4[5Z5]6u6v6x7`7d7m7o9X9_:]:l=S=TU/b*Q.c6|e6|3o6}7O7S8{8|:Q:R:T:{Q0Y*pQ3[.eU4l0Y3[9PR9P7OQ*u%UR0^*uQ4v0kR7n4vQ+X%iR0j+XQ5_1[S7|5_9iR9i7}Q,S&[R1_,SQ5e1aR8P5eQ1m,^S5u1m8_R8_5wQ0x+lW5Q0x5S7t9eQ5S0{Q7t5RR9e7uQ+q&OR1O+qQ2P,pR6V2PYrOXst#dQ&s!ZQ+Z%kQ,j&oQ,l&qQ,m&rQ,o&tQ1z,kS1},p2PR6U1|Q%mpQ&w!_Q&z!aQ&|!bQ'O!cQ'n!uQ+Y%jQ+f%xQ+x&UQ,`&jQ,w&yW-h'h'p'q'tQ-o'lQ0O*iQ0s+gS1p,a,dQ2X,vQ2Y,yQ2Z,zQ2o-gW2q-j-k-n-pQ4y0tQ5V1RQ5Y1VQ5o1gQ5y1rQ6T1{U6d2p2s2vQ6g2tQ7p4zQ7x5XQ7y5ZQ8O5dQ8Y5pQ8`5xS8o6e6iQ8q6hQ9f7vQ9n8ZQ9s8aQ9z8pQ:_9gQ:d9oQ:h9{R:s:eQ%xyQ'a!iQ'l!uU+g%y%z%{Q-O'SU-c'b'c'dS-g'h'rQ/u*dS0t+h+iQ2a-QS2m-d-eQ2t-lQ4`/yQ4z0uQ6`2gQ6c2nQ6h2uR7e4dS$wi<xR*v%VU%Ui%V<xR0]*tQ$viS(q#v+cS)_$b$cQ)a$dQ*W$xS*`${*UQ*o%OQ*p%QQ*z%]Q*{%^Q+P%bQ.d;jQ.e;lQ.g;pQ.h;rQ.i;tQ/U)uS/Z){/]Q/_)}Q/a*PQ/c*RQ/n*[S/s*b/eQ0Z*rQ0[*sh0k+`.^1c3T5l6p8U8u9l:O:c:kQ1V+zQ1X+}Q3W;|Q3X<OQ3Y<RS3o;g;hQ3s.wQ4V/oQ4W/pQ4[/rQ4i0VQ4k0XQ4q0dQ5Z1WQ5]1ZQ6u<VQ6v<XQ6w<ZQ6x<]Q6};kQ7O;mQ7Q;qQ7R;sQ7S;uQ7X3}Q7`4YQ7d4bQ7k4mQ7m4uQ7o4xQ8{<SQ8|;}Q8}<PQ9X7_Q9_7hQ:Q<WQ:R<YQ:S<[Q:T<^Q:U9TQ:]9bQ:l<aQ:{<bQ<j<xQ<v=QQ<w=RQ=S=UR=T=VQ*x%[Q.f;nR7P;onpOXst!Z#d%k&o&q&r&t,k,p1|2PQ!fPS#fZ#oQ&y!`U'e!o5b8RQ'{#SQ(|#{Q)n$nS,d&h&kQ,i&lQ,v&xQ,{'QQ-_'_Q.p(zQ/S)oS0h+V/fQ0n+aQ1x,hQ2k-aQ3R._Q3x.}Q4o0aQ5j1dQ5{1tQ5|1uQ6Q1wQ6S1yQ6X2RQ6s3UQ7V3uQ8W5mQ8d5}Q8e6OQ8g6RQ8y6tQ9m8XR9w8h#YcOPXZst!Z!`!o#d#o#{%k&h&k&l&o&q&r&t&x'Q'_(z+V+a,h,k,p-a._/f0a1d1t1u1w1y1|2P2R3U5b5m5}6O6R6t8R8X8hQ#YWQ#eYQ%ouQ%qvS%sw!gS(O#W(RQ(U#ZQ(p#uQ(u#xQ(}$OQ)O$PQ)P$QQ)Q$RQ)R$SQ)S$TQ)T$UQ)U$VQ)V$WQ)W$XQ)Y$ZQ)[$_Q)^$aQ)c$eW)m$n)o.}3uQ+^%rQ+r&PS-R'U2bQ-p'oS-u(P-wQ-z(XQ-|(`Q.k(tQ.n(vQ.r;PQ.t;SQ.u;TQ.v;WQ/X)yQ0e+RQ2],|Q2`-PQ2p-iQ2w-}Q3].lQ3b;XQ3c;YQ3d;ZQ3e;[Q3f;]Q3g;^Q3h;_Q3i;`Q3j;aQ3k;bQ3l;cQ3m.sQ3n;fQ3q;iQ3r;vQ3y;dQ4r0gQ4{0vQ6_;xQ6e2rQ6j2xQ6y3^Q6z;yQ7T;{Q7U<TQ7}5`Q8l6]Q8p6fQ8z<UQ9Q<_Q9R<`Q9{8rQ:`9hQ:g9yQ;R#SR<o<{R#[WR'W!el!tQ!r!v!y!z']'i'j'k-]-m1a5e5gS'S!e-TS-Q'T'[R2g-ZR(w#xQ!fQT-[']-]]!qQ!r']-]1a5eQ#p]R'f;QR)b$dY!uQ']-]1a5eQ'h!rS'r!v!yS't!z5gS-l'i'jQ-n'kR2u-mT#kZ%cS#jZ%cS%im,gU(c#h#i#lS.Q(d(eQ.U(fQ0i+WQ2z.RU2{.S.T.VS6l2|2}R8s6md#^W#W#Z%f(P(Y*U+T-{/er#gZm#h#i#l%c(d(e(f+W.R.S.T.V2|2}6mS*X$x*]Q/l*YQ1v,gQ2^,}Q4P/hQ6Z2UQ7[4QQ8k6[T<g'U+UV#aW%f*UU#`W%f*US(Q#W(YU(V#Z+T/eS-S'U+UT-v(P-{V'Z!e%g*VQ$lfR)t$qT)i$l)jR3w.|T*Z$x*]T*c${*UQ0l+`Q3P.^Q5i1cQ6q3TQ8V5lQ8v6pQ9j8UQ9|8uQ:b9lQ:j:OQ:r:cR:u:knqOXst!Z#d%k&o&q&r&t,k,p1|2PQ&i!VR,`&ftmOXst!U!V!Z#d%k&f&o&q&r&t,k,p1|2PR,g&lT%jm,gR1],PR,_&dQ&S|R+w&TR+m%}T&m!W&pT&n!W&pT2O,p2P",nodeNames:"⚠ ArithOp ArithOp ?. JSXStartTag LineComment BlockComment Script Hashbang ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > < TypeParamList TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:376,context:U0,nodeProps:[["isolate",-8,5,6,14,34,36,48,50,52,""],["group",-26,9,17,19,65,204,208,212,213,215,218,221,231,233,239,241,243,245,248,254,260,262,264,266,268,270,271,"Statement",-34,13,14,29,32,33,39,48,51,52,54,59,67,69,73,77,79,81,82,107,108,117,118,135,138,140,141,142,143,144,146,147,166,167,169,"Expression",-23,28,30,34,38,40,42,171,173,175,176,178,179,180,182,183,184,186,187,188,198,200,202,203,"Type",-3,85,100,106,"ClassItem"],["openedBy",23,"<",35,"InterpolationStart",53,"[",57,"{",70,"(",159,"JSXStartCloseTag"],["closedBy",24,">",37,"InterpolationEnd",47,"]",58,"}",71,")",164,"JSXEndTag"]],propSources:[G0],skippedNodes:[0,5,6,274],repeatNodeCount:37,tokenData:"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$<r#p#q$=h#q#r$>x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$h&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$h&j(U!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(U!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$h&j(RpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(RpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Rp(U!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$h&j(Rp(U!b'w0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(S#S$h&j'x0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$h&j(Rp(U!b'x0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$h&j!m),Q(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#u(Ch$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#u(Ch$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(Q':f$h&j(U!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$h&j(U!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$h&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$c`$h&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$c``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$c`$h&j(U!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(U!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$c`(U!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$h&j(Rp(U!bOY%ZYZ&cZq%Zqr<Srs&}st%ZtuCruw%Zwx(rx!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr(r<__WS$h&j(Rp(U!bOY<SYZ&cZr<Srs=^sw<Swx@nx!^<S!^!_Bm!_#O<S#O#P>`#P#o<S#o#pBm#p;'S<S;'S;=`Cl<%lO<S(Q=g]WS$h&j(U!bOY=^YZ&cZw=^wx>`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$h&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(U!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$h&j(RpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(RpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Rp(U!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l<S%9[C}i$h&j(j%1l(Rp(U!bOY%ZYZ&cZr%Zrs&}st%ZtuCruw%Zwx(rx!Q%Z!Q![Cr![!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr%9[EoP;=`<%lCr07[FRk$h&j(Rp(U!b$[#t(O,2j(`$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr+dHRk$h&j(Rp(U!b$[#tOY%ZYZ&cZr%Zrs&}st%ZtuGvuw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Gv![!^%Z!^!_*g!_!c%Z!c!}Gv!}#O%Z#O#P&c#P#R%Z#R#SGv#S#T%Z#T#oGv#o#p*g#p$g%Z$g;'SGv;'S;=`Iv<%lOGv+dIyP;=`<%lGv07[JPP;=`<%lEr(KWJ_`$h&j(Rp(U!b#m(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWKl_$h&j$P(Ch(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,#xLva(u+JY$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sv%ZvwM{wx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWNW`$h&j#y(Ch(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At! c_(T';W$h&j(RpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b'l!!i_$h&j(RpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b&z!#mX$h&jOw!#hwx6cx!^!#h!^!_!$Y!_#o!#h#o#p!$Y#p;'S!#h;'S;=`!$r<%lO!#h`!$]TOw!$Ywx7]x;'S!$Y;'S;=`!$l<%lO!$Y`!$oP;=`<%l!$Y&z!$uP;=`<%l!#h'l!%R]$c`$h&j(RpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r!Q!&PZ(RpOY!%zYZ!$YZr!%zrs!$Ysw!%zwx!&rx#O!%z#O#P!$Y#P;'S!%z;'S;=`!']<%lO!%z!Q!&yU$c`(RpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)r!Q!'`P;=`<%l!%z'l!'fP;=`<%l!!b/5|!'t_!i/.^$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#&U!)O_!h!Lf$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z-!n!*[b$h&j(Rp(U!b(P%&f#n(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{!+d{!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW!+o`$h&j(Rp(U!b#k(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;x!,|`$h&j(Rp(U!bo+4YOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,$U!.Z_!Y+Jf$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!/ec$h&j(Rp(U!b}.2^OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!0p!P!Q%Z!Q![!3Y![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!0ya$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!2O!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!2Z_!X!L^$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!3eg$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!3Y![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S!3Y#S#X%Z#X#Y!4|#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!5Vg$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!6n|}%Z}!O!6n!O!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!6wc$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!8_c$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!9uf$h&j(Rp(U!b#l(ChOY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcxz!;Zz{#-}{!P!;Z!P!Q#/d!Q!^!;Z!^!_#(i!_!`#7S!`!a#8i!a!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z?O!;fb$h&j(Rp(U!b!U7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z>^!<w`$h&j(U!b!U7`OY!<nYZ&cZw!<nwx!=yx!P!<n!P!Q!Eq!Q!^!<n!^!_!Gr!_!}!<n!}#O!KS#O#P!Dy#P#o!<n#o#p!Gr#p;'S!<n;'S;=`!L]<%lO!<n<z!>Q^$h&j!U7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!?Td$h&j!U7`O!^&c!_#W&c#W#X!>|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!U7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!U7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c<z!C][$h&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#O!CW#O#P!DR#P#Q!=y#Q#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DWX$h&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DvP;=`<%l!CW<z!EOX$h&jOY!=yYZ&cZ!^!=y!^!_!@c!_#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!EnP;=`<%l!=y>^!Ezl$h&j(U!b!U7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(U!b!U7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(U!b!U7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(U!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$h&j(U!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!<n#Q#o!KS#o#p!JU#p;'S!KS;'S;=`!LV<%lO!KS>^!LYP;=`<%l!KS>^!L`P;=`<%l!<n=l!Ll`$h&j(Rp!U7`OY!LcYZ&cZr!Lcrs!=ys!P!Lc!P!Q!Mn!Q!^!Lc!^!_# o!_!}!Lc!}#O#%P#O#P!Dy#P#o!Lc#o#p# o#p;'S!Lc;'S;=`#&Y<%lO!Lc=l!Mwl$h&j(Rp!U7`OY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#W(r#W#X!Mn#X#Z(r#Z#[!Mn#[#](r#]#^!Mn#^#a(r#a#b!Mn#b#g(r#g#h!Mn#h#i(r#i#j!Mn#j#k!Mn#k#m(r#m#n!Mn#n#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r8Q# vZ(Rp!U7`OY# oZr# ors!@cs!P# o!P!Q#!i!Q!}# o!}#O#$R#O#P!Bq#P;'S# o;'S;=`#$y<%lO# o8Q#!pe(Rp!U7`OY)rZr)rs#O)r#P#W)r#W#X#!i#X#Z)r#Z#[#!i#[#])r#]#^#!i#^#a)r#a#b#!i#b#g)r#g#h#!i#h#i)r#i#j#!i#j#k#!i#k#m)r#m#n#!i#n;'S)r;'S;=`*Z<%lO)r8Q#$WX(RpOY#$RZr#$Rrs!Ars#O#$R#O#P!B[#P#Q# o#Q;'S#$R;'S;=`#$s<%lO#$R8Q#$vP;=`<%l#$R8Q#$|P;=`<%l# o=l#%W^$h&j(RpOY#%PYZ&cZr#%Prs!CWs!^#%P!^!_#$R!_#O#%P#O#P!DR#P#Q!Lc#Q#o#%P#o#p#$R#p;'S#%P;'S;=`#&S<%lO#%P=l#&VP;=`<%l#%P=l#&]P;=`<%l!Lc?O#&kn$h&j(Rp(U!b!U7`OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#W%Z#W#X#&`#X#Z%Z#Z#[#&`#[#]%Z#]#^#&`#^#a%Z#a#b#&`#b#g%Z#g#h#&`#h#i%Z#i#j#&`#j#k#&`#k#m%Z#m#n#&`#n#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z9d#(r](Rp(U!b!U7`OY#(iZr#(irs!Grsw#(iwx# ox!P#(i!P!Q#)k!Q!}#(i!}#O#+`#O#P!Bq#P;'S#(i;'S;=`#,`<%lO#(i9d#)th(Rp(U!b!U7`OY*gZr*grs'}sw*gwx)rx#O*g#P#W*g#W#X#)k#X#Z*g#Z#[#)k#[#]*g#]#^#)k#^#a*g#a#b#)k#b#g*g#g#h#)k#h#i*g#i#j#)k#j#k#)k#k#m*g#m#n#)k#n;'S*g;'S;=`+Z<%lO*g9d#+gZ(Rp(U!bOY#+`Zr#+`rs!JUsw#+`wx#$Rx#O#+`#O#P!B[#P#Q#(i#Q;'S#+`;'S;=`#,Y<%lO#+`9d#,]P;=`<%l#+`9d#,cP;=`<%l#(i?O#,o`$h&j(Rp(U!bOY#,fYZ&cZr#,frs!KSsw#,fwx#%Px!^#,f!^!_#+`!_#O#,f#O#P!DR#P#Q!;Z#Q#o#,f#o#p#+`#p;'S#,f;'S;=`#-q<%lO#,f?O#-tP;=`<%l#,f?O#-zP;=`<%l!;Z07[#.[b$h&j(Rp(U!b'y0/l!U7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z07[#/o_$h&j(Rp(U!bT0/lOY#/dYZ&cZr#/drs#0nsw#/dwx#4Ox!^#/d!^!_#5}!_#O#/d#O#P#1p#P#o#/d#o#p#5}#p;'S#/d;'S;=`#6|<%lO#/d06j#0w]$h&j(U!bT0/lOY#0nYZ&cZw#0nwx#1px!^#0n!^!_#3R!_#O#0n#O#P#1p#P#o#0n#o#p#3R#p;'S#0n;'S;=`#3x<%lO#0n05W#1wX$h&jT0/lOY#1pYZ&cZ!^#1p!^!_#2d!_#o#1p#o#p#2d#p;'S#1p;'S;=`#2{<%lO#1p0/l#2iST0/lOY#2dZ;'S#2d;'S;=`#2u<%lO#2d0/l#2xP;=`<%l#2d05W#3OP;=`<%l#1p01O#3YW(U!bT0/lOY#3RZw#3Rwx#2dx#O#3R#O#P#2d#P;'S#3R;'S;=`#3r<%lO#3R01O#3uP;=`<%l#3R06j#3{P;=`<%l#0n05x#4X]$h&j(RpT0/lOY#4OYZ&cZr#4Ors#1ps!^#4O!^!_#5Q!_#O#4O#O#P#1p#P#o#4O#o#p#5Q#p;'S#4O;'S;=`#5w<%lO#4O00^#5XW(RpT0/lOY#5QZr#5Qrs#2ds#O#5Q#O#P#2d#P;'S#5Q;'S;=`#5q<%lO#5Q00^#5tP;=`<%l#5Q05x#5zP;=`<%l#4O01p#6WY(Rp(U!bT0/lOY#5}Zr#5}rs#3Rsw#5}wx#5Qx#O#5}#O#P#2d#P;'S#5};'S;=`#6v<%lO#5}01p#6yP;=`<%l#5}07[#7PP;=`<%l#/d)3h#7ab$h&j$P(Ch(Rp(U!b!U7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;ZAt#8vb$Y#t$h&j(Rp(U!b!U7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z'Ad#:Zp$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#U%Z#U#V#?i#V#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#<jk$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!d$b$h&j#})Lv(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#O-<U(Rp(U!b(y7`OY*gZr*grs'}sw*gwx)rx!P*g!P!Q#MO!Q!^*g!^!_#Mt!_!`$ f!`#O*g#P;'S*g;'S;=`+Z<%lO*g(n#MXX$j&j(Rp(U!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#M}Z#o(Ch(Rp(U!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#Np!`#O*g#P;'S*g;'S;=`+Z<%lO*g(El#NyX$P(Ch(Rp(U!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El$ oX#p(Ch(Rp(U!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g*)x$!ga#]*!Y$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a$#l!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[$#w_#h(Cl$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x$%Vag!*r#p(Ch$e#|$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`$&[!`!a$'f!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$&g_#p(Ch$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$'qa#o(Ch$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`!a$(v!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$)R`#o(Ch$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(Kd$*`a(m(Ct$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!a%Z!a!b$+e!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$+p`$h&j#z(Ch(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`$,}_!y$Ip$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f$.X_!P0,v$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(n$/]Z$h&jO!^$0O!^!_$0f!_#i$0O#i#j$0k#j#l$0O#l#m$2^#m#o$0O#o#p$0f#p;'S$0O;'S;=`$4i<%lO$0O(n$0VT_#S$h&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#S$0kO_#S(n$0p[$h&jO!Q&c!Q![$1f![!^&c!_!c&c!c!i$1f!i#T&c#T#Z$1f#Z#o&c#o#p$3|#p;'S&c;'S;=`&w<%lO&c(n$1kZ$h&jO!Q&c!Q![$2^![!^&c!_!c&c!c!i$2^!i#T&c#T#Z$2^#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$2cZ$h&jO!Q&c!Q![$3U![!^&c!_!c&c!c!i$3U!i#T&c#T#Z$3U#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$3ZZ$h&jO!Q&c!Q![$0O![!^&c!_!c&c!c!i$0O!i#T&c#T#Z$0O#Z#o&c#p;'S&c;'S;=`&w<%lO&c#S$4PR!Q![$4Y!c!i$4Y#T#Z$4Y#S$4]S!Q![$4Y!c!i$4Y#T#Z$4Y#q#r$0f(n$4lP;=`<%l$0O#1[$4z_!V#)l$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$6U`#w(Ch$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;p$7c_$h&j(Rp(U!b([+4QOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$8qk$h&j(Rp(U!b(O,2j$^#t(`$I[OY%ZYZ&cZr%Zrs&}st%Ztu$8buw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$8b![!^%Z!^!_*g!_!c%Z!c!}$8b!}#O%Z#O#P&c#P#R%Z#R#S$8b#S#T%Z#T#o$8b#o#p*g#p$g%Z$g;'S$8b;'S;=`$<l<%lO$8b+d$:qk$h&j(Rp(U!b$^#tOY%ZYZ&cZr%Zrs&}st%Ztu$:fuw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$:f![!^%Z!^!_*g!_!c%Z!c!}$:f!}#O%Z#O#P&c#P#R%Z#R#S$:f#S#T%Z#T#o$:f#o#p*g#p$g%Z$g;'S$:f;'S;=`$<f<%lO$:f+d$<iP;=`<%l$:f07[$<oP;=`<%l$8b#Jf$<{X![#Hb(Rp(U!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g,#x$=sa(t+JY$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$+e#q;'S%Z;'S;=`+a<%lO%Z(Kd$?V_!Z(Cds`$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!n7`$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$h&j(Rp(U!b'w0/l$[#t(O,2j(`$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$h&j(Rp(U!b'x0/l$[#t(O,2j(`$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr",tokenizers:[B0,N0,I0,2,3,4,5,6,7,8,9,10,11,12,13,14,j0,new xs("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOu~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!R~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(^~~",141,335),new xs("j~RQYZXz{^~^O'{~~aP!P!Qd~iO'|~~",25,318)],topRules:{Script:[0,7],SingleExpression:[1,272],SingleClassItem:[2,273]},dialects:{jsx:0,ts:14725},dynamicPrecedences:{77:1,79:1,91:1,167:1,196:1},specialized:[{term:322,get:n=>L0[n]||-1},{term:338,get:n=>F0[n]||-1},{term:92,get:n=>H0[n]||-1}],tokenPrec:14749});class iu{constructor(e,t,i){this.state=e,this.pos=t,this.explicit=i,this.abortListeners=[]}tokenBefore(e){let t=J(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),i=Math.max(t.from,this.pos-250),s=t.text.slice(i-t.from,this.pos-t.from),r=s.search(su(e,!1));return r<0?null:{from:i+r,to:this.pos,text:s.slice(r)}}get aborted(){return this.abortListeners==null}addEventListener(e,t){e=="abort"&&this.abortListeners&&this.abortListeners.push(t)}}function nh(n){let e=Object.keys(n).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function J0(n){let e=Object.create(null),t=Object.create(null);for(let{label:s}of n){e[s[0]]=!0;for(let r=1;r<s.length;r++)t[s[r]]=!0}let i=nh(e)+nh(t)+"*$";return[new RegExp("^"+i),new RegExp(i)]}function nu(n){let e=n.map(s=>typeof s=="string"?{label:s}:s),[t,i]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:J0(e);return s=>{let r=s.matchBefore(i);return r||s.explicit?{from:r?r.from:s.pos,options:e,validFor:t}:null}}function eb(n,e){return t=>{for(let i=J(t.state).resolveInner(t.pos,-1);i;i=i.parent){if(n.indexOf(i.name)>-1)return null;if(i.type.isTop)break}return e(t)}}class sh{constructor(e,t,i,s){this.completion=e,this.source=t,this.match=i,this.score=s}}function Pt(n){return n.selection.main.from}function su(n,e){var t;let{source:i}=n,s=e&&i[0]!="^",r=i[i.length-1]!="$";return!s&&!r?n:new RegExp(`${s?"^":""}(?:${i})${r?"$":""}`,(t=n.flags)!==null&&t!==void 0?t:n.ignoreCase?"i":"")}const sl=pt.define();function tb(n,e,t,i){let{main:s}=n.selection,r=t-s.from,o=i-s.from;return Object.assign(Object.assign({},n.changeByRange(l=>l!=s&&t!=i&&n.sliceDoc(l.from+r,l.from+o)!=n.sliceDoc(t,i)?{range:l}:{changes:{from:l.from+r,to:i==s.from?l.to:l.from+o,insert:e},range:y.cursor(l.from+r+e.length)})),{scrollIntoView:!0,userEvent:"input.complete"})}const rh=new WeakMap;function ib(n){if(!Array.isArray(n))return n;let e=rh.get(n);return e||rh.set(n,e=nu(n)),e}const Qs=A.define(),nn=A.define();class nb{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let t=0;t<e.length;){let i=ae(e,t),s=qe(i);this.chars.push(i);let r=e.slice(t,t+s),o=r.toUpperCase();this.folded.push(ae(o==r?r.toLowerCase():o,0)),t+=s}this.astral=e.length!=this.chars.length}ret(e,t){return this.score=e,this.matched=t,this}match(e){if(this.pattern.length==0)return this.ret(-100,[]);if(e.length<this.pattern.length)return null;let{chars:t,folded:i,any:s,precise:r,byWord:o}=this;if(t.length==1){let S=ae(e,0),w=qe(S),Q=w==e.length?0:-100;if(S!=t[0])if(S==i[0])Q+=-200;else return null;return this.ret(Q,[0,w])}let l=e.indexOf(this.pattern);if(l==0)return this.ret(e.length==this.pattern.length?0:-100,[0,this.pattern.length]);let a=t.length,h=0;if(l<0){for(let S=0,w=Math.min(e.length,200);S<w&&h<a;){let Q=ae(e,S);(Q==t[h]||Q==i[h])&&(s[h++]=S),S+=qe(Q)}if(h<a)return null}let c=0,f=0,u=!1,d=0,O=-1,m=-1,g=/[a-z]/.test(e),b=!0;for(let S=0,w=Math.min(e.length,200),Q=0;S<w&&f<a;){let x=ae(e,S);l<0&&(c<a&&x==t[c]&&(r[c++]=S),d<a&&(x==t[d]||x==i[d]?(d==0&&(O=S),m=S+1,d++):d=0));let k,P=x<255?x>=48&&x<=57||x>=97&&x<=122?2:x>=65&&x<=90?1:0:(k=Yo(x))!=k.toLowerCase()?1:k!=k.toUpperCase()?2:0;(!S||P==1&&g||Q==0&&P!=0)&&(t[f]==x||i[f]==x&&(u=!0)?o[f++]=S:o.length&&(b=!1)),Q=P,S+=qe(x)}return f==a&&o[0]==0&&b?this.result(-100+(u?-200:0),o,e):d==a&&O==0?this.ret(-200-e.length+(m==e.length?0:-100),[0,m]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):d==a?this.ret(-900-e.length,[O,m]):f==a?this.result(-100+(u?-200:0)+-700+(b?0:-1100),o,e):t.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,t,i){let s=[],r=0;for(let o of t){let l=o+(this.astral?qe(ae(i,o)):1);r&&s[r-1]==o?s[r-1]=l:(s[r++]=o,s[r++]=l)}return this.ret(e-i.length,s)}}class sb{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length<this.pattern.length)return null;let t=e.slice(0,this.pattern.length),i=t==this.pattern?0:t.toLowerCase()==this.folded?-200:null;return i==null?null:(this.matched=[0,t.length],this.score=i+(e.length==this.pattern.length?0:-100),this)}}const fe=T.define({combine(n){return lt(n,{activateOnTyping:!0,activateOnCompletion:()=>!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:rb,filterStrict:!1,compareCompletions:(e,t)=>e.label.localeCompare(t.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,tooltipClass:(e,t)=>i=>oh(e(i),t(i)),optionClass:(e,t)=>i=>oh(e(i),t(i)),addToOptions:(e,t)=>e.concat(t),filterStrict:(e,t)=>e||t})}});function oh(n,e){return n?e?n+" "+e:n:e}function rb(n,e,t,i,s,r){let o=n.textDirection==L.RTL,l=o,a=!1,h="top",c,f,u=e.left-s.left,d=s.right-e.right,O=i.right-i.left,m=i.bottom-i.top;if(l&&u<Math.min(O,d)?l=!1:!l&&d<Math.min(O,u)&&(l=!0),O<=(l?u:d))c=Math.max(s.top,Math.min(t.top,s.bottom-m))-e.top,f=Math.min(400,l?u:d);else{a=!0,f=Math.min(400,(o?e.right:s.right-e.left)-30);let S=s.bottom-e.bottom;S>=m||S>e.top?c=t.bottom-e.top:(h="bottom",c=e.bottom-t.top)}let g=(e.bottom-e.top)/r.offsetHeight,b=(e.right-e.left)/r.offsetWidth;return{style:`${h}: ${c/g}px; max-width: ${f/b}px`,class:"cm-completionInfo-"+(a?o?"left-narrow":"right-narrow":l?"left":"right")}}function ob(n){let e=n.addToOptions.slice();return n.icons&&e.push({render(t){let i=document.createElement("div");return i.classList.add("cm-completionIcon"),t.type&&i.classList.add(...t.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),i.setAttribute("aria-hidden","true"),i},position:20}),e.push({render(t,i,s,r){let o=document.createElement("span");o.className="cm-completionLabel";let l=t.displayLabel||t.label,a=0;for(let h=0;h<r.length;){let c=r[h++],f=r[h++];c>a&&o.appendChild(document.createTextNode(l.slice(a,c)));let u=o.appendChild(document.createElement("span"));u.appendChild(document.createTextNode(l.slice(c,f))),u.className="cm-completionMatchedText",a=f}return a<l.length&&o.appendChild(document.createTextNode(l.slice(a))),o},position:50},{render(t){if(!t.detail)return null;let i=document.createElement("span");return i.className="cm-completionDetail",i.textContent=t.detail,i},position:80}),e.sort((t,i)=>t.position-i.position).map(t=>t.render)}function yr(n,e,t){if(n<=t)return{from:0,to:n};if(e<0&&(e=0),e<=n>>1){let s=Math.floor(e/t);return{from:s*t,to:(s+1)*t}}let i=Math.floor((n-e)/t);return{from:n-(i+1)*t,to:n-i*t}}class lb{constructor(e,t,i){this.view=e,this.stateField=t,this.applyCompletion=i,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:a=>this.placeInfo(a),key:this},this.space=null,this.currentClass="";let s=e.state.field(t),{options:r,selected:o}=s.open,l=e.state.facet(fe);this.optionContent=ob(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=yr(r.length,o,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",a=>{let{options:h}=e.state.field(t).open;for(let c=a.target,f;c&&c!=this.dom;c=c.parentNode)if(c.nodeName=="LI"&&(f=/-(\d+)$/.exec(c.id))&&+f[1]<h.length){this.applyCompletion(e,h[+f[1]]),a.preventDefault();return}}),this.dom.addEventListener("focusout",a=>{let h=e.state.field(this.stateField,!1);h&&h.tooltip&&e.state.facet(fe).closeOnBlur&&a.relatedTarget!=e.contentDOM&&e.dispatch({effects:nn.of(null)})}),this.showOptions(r,s.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var t;let i=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),i!=s){let{options:r,selected:o,disabled:l}=i.open;(!s.open||s.open.options!=r)&&(this.range=yr(r.length,o,e.state.facet(fe).maxRenderedOptions),this.showOptions(r,i.id)),this.updateSel(),l!=((t=s.open)===null||t===void 0?void 0:t.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let t=this.tooltipClass(e);if(t!=this.currentClass){for(let i of this.currentClass.split(" "))i&&this.dom.classList.remove(i);for(let i of t.split(" "))i&&this.dom.classList.add(i);this.currentClass=t}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),t=e.open;if((t.selected>-1&&t.selected<this.range.from||t.selected>=this.range.to)&&(this.range=yr(t.options.length,t.selected,this.view.state.facet(fe).maxRenderedOptions),this.showOptions(t.options,e.id)),this.updateSelectedOption(t.selected)){this.destroyInfo();let{completion:i}=t.options[t.selected],{info:s}=i;if(!s)return;let r=typeof s=="string"?document.createTextNode(s):s(i);if(!r)return;"then"in r?r.then(o=>{o&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(o,i)}).catch(o=>ke(this.view.state,o,"completion info")):this.addInfoPane(r,i)}}addInfoPane(e,t){this.destroyInfo();let i=this.info=document.createElement("div");if(i.className="cm-tooltip cm-completionInfo",e.nodeType!=null)i.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:r}=e;i.appendChild(s),this.infoDestroy=r||null}this.dom.appendChild(i),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let i=this.list.firstChild,s=this.range.from;i;i=i.nextSibling,s++)i.nodeName!="LI"||!i.id?s--:s==e?i.hasAttribute("aria-selected")||(i.setAttribute("aria-selected","true"),t=i):i.hasAttribute("aria-selected")&&i.removeAttribute("aria-selected");return t&&hb(this.list,t),t}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let t=this.dom.getBoundingClientRect(),i=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),r=this.space;if(!r){let o=this.dom.ownerDocument.defaultView||window;r={left:0,top:0,right:o.innerWidth,bottom:o.innerHeight}}return s.top>Math.min(r.bottom,t.bottom)-10||s.bottom<Math.max(r.top,t.top)+10?null:this.view.state.facet(fe).positionInfo(this.view,t,s,i,r,this.dom)}placeInfo(e){this.info&&(e?(e.style&&(this.info.style.cssText=e.style),this.info.className="cm-tooltip cm-completionInfo "+(e.class||"")):this.info.style.cssText="top: -1e6px")}createListBox(e,t,i){const s=document.createElement("ul");s.id=t,s.setAttribute("role","listbox"),s.setAttribute("aria-expanded","true"),s.setAttribute("aria-label",this.view.state.phrase("Completions"));let r=null;for(let o=i.from;o<i.to;o++){let{completion:l,match:a}=e[o],{section:h}=l;if(h){let u=typeof h=="string"?h:h.name;if(u!=r&&(o>i.from||i.from==0))if(r=u,typeof h!="string"&&h.header)s.appendChild(h.header(h));else{let d=s.appendChild(document.createElement("completion-section"));d.textContent=u}}const c=s.appendChild(document.createElement("li"));c.id=t+"-"+o,c.setAttribute("role","option");let f=this.optionClass(l);f&&(c.className=f);for(let u of this.optionContent){let d=u(l,this.view.state,this.view,a);d&&c.appendChild(d)}}return i.from&&s.classList.add("cm-completionListIncompleteTop"),i.to<e.length&&s.classList.add("cm-completionListIncompleteBottom"),s}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}}function ab(n,e){return t=>new lb(t,n,e)}function hb(n,e){let t=n.getBoundingClientRect(),i=e.getBoundingClientRect(),s=t.height/n.offsetHeight;i.top<t.top?n.scrollTop-=(t.top-i.top)/s:i.bottom>t.bottom&&(n.scrollTop+=(i.bottom-t.bottom)/s)}function lh(n){return(n.boost||0)*100+(n.apply?10:0)+(n.info?5:0)+(n.type?1:0)}function cb(n,e){let t=[],i=null,s=h=>{t.push(h);let{section:c}=h.completion;if(c){i||(i=[]);let f=typeof c=="string"?c:c.name;i.some(u=>u.name==f)||i.push(typeof c=="string"?{name:f}:c)}},r=e.facet(fe);for(let h of n)if(h.hasResult()){let c=h.result.getMatch;if(h.result.filter===!1)for(let f of h.result.options)s(new sh(f,h.source,c?c(f):[],1e9-t.length));else{let f=e.sliceDoc(h.from,h.to),u,d=r.filterStrict?new sb(f):new nb(f);for(let O of h.result.options)if(u=d.match(O.label)){let m=O.displayLabel?c?c(O,u.matched):[]:u.matched;s(new sh(O,h.source,m,u.score+(O.boost||0)))}}}if(i){let h=Object.create(null),c=0,f=(u,d)=>{var O,m;return((O=u.rank)!==null&&O!==void 0?O:1e9)-((m=d.rank)!==null&&m!==void 0?m:1e9)||(u.name<d.name?-1:1)};for(let u of i.sort(f))c-=1e5,h[u.name]=c;for(let u of t){let{section:d}=u.completion;d&&(u.score+=h[typeof d=="string"?d:d.name])}}let o=[],l=null,a=r.compareCompletions;for(let h of t.sort((c,f)=>f.score-c.score||a(c.completion,f.completion))){let c=h.completion;!l||l.label!=c.label||l.detail!=c.detail||l.type!=null&&c.type!=null&&l.type!=c.type||l.apply!=c.apply||l.boost!=c.boost?o.push(h):lh(h.completion)>lh(l)&&(o[o.length-1]=h),l=h.completion}return o}class ei{constructor(e,t,i,s,r,o){this.options=e,this.attrs=t,this.tooltip=i,this.timestamp=s,this.selected=r,this.disabled=o}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new ei(this.options,ah(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,i,s,r){let o=cb(e,t);if(!o.length)return s&&e.some(a=>a.state==1)?new ei(s.options,s.attrs,s.tooltip,s.timestamp,s.selected,!0):null;let l=t.facet(fe).selectOnOpen?0:-1;if(s&&s.selected!=l&&s.selected!=-1){let a=s.options[s.selected].completion;for(let h=0;h<o.length;h++)if(o[h].completion==a){l=h;break}}return new ei(o,ah(i,l),{pos:e.reduce((a,h)=>h.hasResult()?Math.min(a,h.from):a,1e8),create:mb,above:r.aboveCursor},s?s.timestamp:Date.now(),l,!1)}map(e){return new ei(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected,this.disabled)}}class ws{constructor(e,t,i){this.active=e,this.id=t,this.open=i}static start(){return new ws(Ob,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:t}=e,i=t.facet(fe),r=(i.override||t.languageDataAt("autocomplete",Pt(t)).map(ib)).map(l=>(this.active.find(h=>h.source==l)||new ge(l,this.active.some(h=>h.state!=0)?1:0)).update(e,i));r.length==this.active.length&&r.every((l,a)=>l==this.active[a])&&(r=this.active);let o=this.open;o&&e.docChanged&&(o=o.map(e.changes)),e.selection||r.some(l=>l.hasResult()&&e.changes.touchesRange(l.from,l.to))||!fb(r,this.active)?o=ei.build(r,t,this.id,o,i):o&&o.disabled&&!r.some(l=>l.state==1)&&(o=null),!o&&r.every(l=>l.state!=1)&&r.some(l=>l.hasResult())&&(r=r.map(l=>l.hasResult()?new ge(l.source,0):l));for(let l of e.effects)l.is(ou)&&(o=o&&o.setSelected(l.value,this.id));return r==this.active&&o==this.open?this:new ws(r,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?ub:db}}function fb(n,e){if(n==e)return!0;for(let t=0,i=0;;){for(;t<n.length&&!n[t].hasResult;)t++;for(;i<e.length&&!e[i].hasResult;)i++;let s=t==n.length,r=i==e.length;if(s||r)return s==r;if(n[t++].result!=e[i++].result)return!1}}const ub={"aria-autocomplete":"list"},db={};function ah(n,e){let t={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":n};return e>-1&&(t["aria-activedescendant"]=n+"-"+e),t}const Ob=[];function ko(n,e){if(n.isUserEvent("input.complete")){let t=n.annotation(sl);if(t&&e.activateOnCompletion(t))return"input"}return n.isUserEvent("input.type")?"input":n.isUserEvent("delete.backward")?"delete":null}class ge{constructor(e,t,i=-1){this.source=e,this.state=t,this.explicitPos=i}hasResult(){return!1}update(e,t){let i=ko(e,t),s=this;i?s=s.handleUserEvent(e,i,t):e.docChanged?s=s.handleChange(e):e.selection&&s.state!=0&&(s=new ge(s.source,0));for(let r of e.effects)if(r.is(Qs))s=new ge(s.source,1,r.value?Pt(e.state):-1);else if(r.is(nn))s=new ge(s.source,0);else if(r.is(ru))for(let o of r.value)o.source==s.source&&(s=o);return s}handleUserEvent(e,t,i){return t=="delete"||!i.activateOnTyping?this.map(e.changes):new ge(this.source,1)}handleChange(e){return e.changes.touchesRange(Pt(e.startState))?new ge(this.source,0):this.map(e.changes)}map(e){return e.empty||this.explicitPos<0?this:new ge(this.source,this.state,e.mapPos(this.explicitPos))}}class li extends ge{constructor(e,t,i,s,r){super(e,2,t),this.result=i,this.from=s,this.to=r}hasResult(){return!0}handleUserEvent(e,t,i){var s;let r=this.result;r.map&&!e.changes.empty&&(r=r.map(r,e.changes));let o=e.changes.mapPos(this.from),l=e.changes.mapPos(this.to,1),a=Pt(e.state);if((this.explicitPos<0?a<=o:a<this.from)||a>l||!r||t=="delete"&&Pt(e.startState)==this.from)return new ge(this.source,t=="input"&&i.activateOnTyping?1:0);let h=this.explicitPos<0?-1:e.changes.mapPos(this.explicitPos);return pb(r.validFor,e.state,o,l)?new li(this.source,h,r,o,l):r.update&&(r=r.update(r,o,l,new iu(e.state,a,h>=0)))?new li(this.source,h,r,r.from,(s=r.to)!==null&&s!==void 0?s:Pt(e.state)):new ge(this.source,1,h)}handleChange(e){return e.changes.touchesRange(this.from,this.to)?new ge(this.source,0):this.map(e.changes)}map(e){return e.empty?this:(this.result.map?this.result.map(this.result,e):this.result)?new li(this.source,this.explicitPos<0?-1:e.mapPos(this.explicitPos),this.result,e.mapPos(this.from),e.mapPos(this.to,1)):new ge(this.source,0)}}function pb(n,e,t,i){if(!n)return!1;let s=e.sliceDoc(t,i);return typeof n=="function"?n(s,t,i,e):su(n,!0).test(s)}const ru=A.define({map(n,e){return n.map(t=>t.map(e))}}),ou=A.define(),Pe=oe.define({create(){return ws.start()},update(n,e){return n.update(e)},provide:n=>[Go.from(n,e=>e.tooltip),v.contentAttributes.from(n,e=>e.attrs)]});function rl(n,e){const t=e.completion.apply||e.completion.label;let i=n.state.field(Pe).active.find(s=>s.source==e.source);return i instanceof li?(typeof t=="string"?n.dispatch(Object.assign(Object.assign({},tb(n.state,t,i.from,i.to)),{annotations:sl.of(e.completion)})):t(n,e.completion,i.from,i.to),!0):!1}const mb=ab(Pe,rl);function qn(n,e="option"){return t=>{let i=t.state.field(Pe,!1);if(!i||!i.open||i.open.disabled||Date.now()-i.open.timestamp<t.state.facet(fe).interactionDelay)return!1;let s=1,r;e=="page"&&(r=wf(t,i.open.tooltip))&&(s=Math.max(2,Math.floor(r.dom.offsetHeight/r.dom.querySelector("li").offsetHeight)-1));let{length:o}=i.open.options,l=i.open.selected>-1?i.open.selected+s*(n?1:-1):n?0:o-1;return l<0?l=e=="page"?0:o-1:l>=o&&(l=e=="page"?o-1:0),t.dispatch({effects:ou.of(l)}),!0}}const gb=n=>{let e=n.state.field(Pe,!1);return n.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestamp<n.state.facet(fe).interactionDelay?!1:rl(n,e.open.options[e.open.selected])},bb=n=>n.state.field(Pe,!1)?(n.dispatch({effects:Qs.of(!0)}),!0):!1,yb=n=>{let e=n.state.field(Pe,!1);return!e||!e.active.some(t=>t.state!=0)?!1:(n.dispatch({effects:nn.of(null)}),!0)};class Sb{constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}}const xb=50,Qb=1e3,wb=ne.fromClass(class{constructor(n){this.view=n,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of n.state.field(Pe).active)e.state==1&&this.startQuery(e)}update(n){let e=n.state.field(Pe),t=n.state.facet(fe);if(!n.selectionSet&&!n.docChanged&&n.startState.field(Pe)==e)return;let i=n.transactions.some(r=>(r.selection||r.docChanged)&&!ko(r,t));for(let r=0;r<this.running.length;r++){let o=this.running[r];if(i||o.updates.length+n.transactions.length>xb&&Date.now()-o.time>Qb){for(let l of o.context.abortListeners)try{l()}catch(a){ke(this.view.state,a)}o.context.abortListeners=null,this.running.splice(r--,1)}else o.updates.push(...n.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),n.transactions.some(r=>r.effects.some(o=>o.is(Qs)))&&(this.pendingStart=!0);let s=this.pendingStart?50:t.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(r=>r.state==1&&!this.running.some(o=>o.active.source==r.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let r of n.transactions)ko(r,t)=="input"?this.composing=2:this.composing==2&&r.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:n}=this.view,e=n.field(Pe);for(let t of e.active)t.state==1&&!this.running.some(i=>i.active.source==t.source)&&this.startQuery(t)}startQuery(n){let{state:e}=this.view,t=Pt(e),i=new iu(e,t,n.explicitPos==t),s=new Sb(n,i);this.running.push(s),Promise.resolve(n.source(i)).then(r=>{s.context.aborted||(s.done=r||null,this.scheduleAccept())},r=>{this.view.dispatch({effects:nn.of(null)}),ke(this.view.state,r)})}scheduleAccept(){this.running.every(n=>n.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(fe).updateSyncTime))}accept(){var n;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],t=this.view.state.facet(fe);for(let i=0;i<this.running.length;i++){let s=this.running[i];if(s.done===void 0)continue;if(this.running.splice(i--,1),s.done){let o=new li(s.active.source,s.active.explicitPos,s.done,s.done.from,(n=s.done.to)!==null&&n!==void 0?n:Pt(s.updates.length?s.updates[0].startState:this.view.state));for(let l of s.updates)o=o.update(l,t);if(o.hasResult()){e.push(o);continue}}let r=this.view.state.field(Pe).active.find(o=>o.source==s.active.source);if(r&&r.state==1)if(s.done==null){let o=new ge(s.active.source,0);for(let l of s.updates)o=o.update(l,t);o.state!=1&&e.push(o)}else this.startQuery(r)}e.length&&this.view.dispatch({effects:ru.of(e)})}},{eventHandlers:{blur(n){let e=this.view.state.field(Pe,!1);if(e&&e.tooltip&&this.view.state.facet(fe).closeOnBlur){let t=e.open&&wf(this.view,e.open.tooltip);(!t||!t.dom.contains(n.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:nn.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:Qs.of(!1)}),20),this.composing=0}}}),$b=typeof navigator=="object"&&/Win/.test(navigator.platform),Pb=Xt.highest(v.domEventHandlers({keydown(n,e){let t=e.state.field(Pe,!1);if(!t||!t.open||t.open.disabled||t.open.selected<0||n.key.length>1||n.ctrlKey&&!($b&&n.altKey)||n.metaKey)return!1;let i=t.open.options[t.open.selected],s=t.active.find(o=>o.source==i.source),r=i.completion.commitCharacters||s.result.commitCharacters;return r&&r.indexOf(n.key)>-1&&rl(e,i),!1}})),lu=v.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class kb{constructor(e,t,i,s){this.field=e,this.line=t,this.from=i,this.to=s}}class ol{constructor(e,t,i){this.field=e,this.from=t,this.to=i}map(e){let t=e.mapPos(this.from,-1,ce.TrackDel),i=e.mapPos(this.to,1,ce.TrackDel);return t==null||i==null?null:new ol(this.field,t,i)}}class ll{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let i=[],s=[t],r=e.doc.lineAt(t),o=/^\s*/.exec(r.text)[0];for(let a of this.lines){if(i.length){let h=o,c=/^\t*/.exec(a)[0].length;for(let f=0;f<c;f++)h+=e.facet(_s);s.push(t+h.length-c),a=h+a.slice(c)}i.push(a),t+=a.length+1}let l=this.fieldPositions.map(a=>new ol(a.field,s[a.line]+a.from,s[a.line]+a.to));return{text:i,ranges:l}}static parse(e){let t=[],i=[],s=[],r;for(let o of e.split(/\r\n?|\n/)){for(;r=/[#$]\{(?:(\d+)(?::([^}]*))?|((?:\\[{}]|[^}])*))\}/.exec(o);){let l=r[1]?+r[1]:null,a=r[2]||r[3]||"",h=-1,c=a.replace(/\\[{}]/g,f=>f[1]);for(let f=0;f<t.length;f++)(l!=null?t[f].seq==l:c&&t[f].name==c)&&(h=f);if(h<0){let f=0;for(;f<t.length&&(l==null||t[f].seq!=null&&t[f].seq<l);)f++;t.splice(f,0,{seq:l,name:c}),h=f;for(let u of s)u.field>=h&&u.field++}s.push(new kb(h,i.length,r.index,r.index+c.length)),o=o.slice(0,r.index)+a+o.slice(r.index+r[0].length)}o=o.replace(/\\([{}])/g,(l,a,h)=>{for(let c of s)c.line==i.length&&c.from>h&&(c.from--,c.to--);return a}),i.push(o)}return new ll(i,s)}}let vb=R.widget({widget:new class extends mt{toDOM(){let n=document.createElement("span");return n.className="cm-snippetFieldPosition",n}ignoreEvent(){return!1}}}),Zb=R.mark({class:"cm-snippetField"});class Si{constructor(e,t){this.ranges=e,this.active=t,this.deco=R.set(e.map(i=>(i.from==i.to?vb:Zb).range(i.from,i.to)))}map(e){let t=[];for(let i of this.ranges){let s=i.map(e);if(!s)return null;t.push(s)}return new Si(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(i=>i.field==this.active&&i.from<=t.from&&i.to>=t.to))}}const mn=A.define({map(n,e){return n&&n.map(e)}}),Tb=A.define(),sn=oe.define({create(){return null},update(n,e){for(let t of e.effects){if(t.is(mn))return t.value;if(t.is(Tb)&&n)return new Si(n.ranges,t.value)}return n&&e.docChanged&&(n=n.map(e.changes)),n&&e.selection&&!n.selectionInsideField(e.selection)&&(n=null),n},provide:n=>v.decorations.from(n,e=>e?e.deco:R.none)});function al(n,e){return y.create(n.filter(t=>t.field==e).map(t=>y.range(t.from,t.to)))}function Cb(n){let e=ll.parse(n);return(t,i,s,r)=>{let{text:o,ranges:l}=e.instantiate(t.state,s),a={changes:{from:s,to:r,insert:_.of(o)},scrollIntoView:!0,annotations:i?[sl.of(i),ie.userEvent.of("input.complete")]:void 0};if(l.length&&(a.selection=al(l,0)),l.some(h=>h.field>0)){let h=new Si(l,0),c=a.effects=[mn.of(h)];t.state.field(sn,!1)===void 0&&c.push(A.appendConfig.of([sn,Wb,Yb,lu]))}t.dispatch(t.state.update(a))}}function au(n){return({state:e,dispatch:t})=>{let i=e.field(sn,!1);if(!i||n<0&&i.active==0)return!1;let s=i.active+n,r=n>0&&!i.ranges.some(o=>o.field==s+n);return t(e.update({selection:al(i.ranges,s),effects:mn.of(r?null:new Si(i.ranges,s)),scrollIntoView:!0})),!0}}const Rb=({state:n,dispatch:e})=>n.field(sn,!1)?(e(n.update({effects:mn.of(null)})),!0):!1,Ab=au(1),Xb=au(-1),Mb=[{key:"Tab",run:Ab,shift:Xb},{key:"Escape",run:Rb}],hh=T.define({combine(n){return n.length?n[0]:Mb}}),Wb=Xt.highest(un.compute([hh],n=>n.facet(hh)));function we(n,e){return Object.assign(Object.assign({},e),{apply:Cb(n)})}const Yb=v.domEventHandlers({mousedown(n,e){let t=e.state.field(sn,!1),i;if(!t||(i=e.posAtCoords({x:n.clientX,y:n.clientY}))==null)return!1;let s=t.ranges.find(r=>r.from<=i&&r.to>=i);return!s||s.field==t.active?!1:(e.dispatch({selection:al(t.ranges,s.field),effects:mn.of(t.ranges.some(r=>r.field>s.field)?new Si(t.ranges,s.field):null),scrollIntoView:!0}),!0)}}),rn={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},_t=A.define({map(n,e){let t=e.mapPos(n,-1,ce.TrackAfter);return t??void 0}}),hl=new class extends Dt{};hl.startSide=1;hl.endSide=-1;const hu=oe.define({create(){return V.empty},update(n,e){if(n=n.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);n=n.update({filter:i=>i>=t.from&&i<=t.to})}for(let t of e.effects)t.is(_t)&&(n=n.update({add:[hl.range(t.value,t.value+1)]}));return n}});function qb(){return[Vb,hu]}const Sr="()[]{}<>";function cu(n){for(let e=0;e<Sr.length;e+=2)if(Sr.charCodeAt(e)==n)return Sr.charAt(e+1);return Yo(n<128?n:n+1)}function fu(n,e){return n.languageDataAt("closeBrackets",e)[0]||rn}const Eb=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),Vb=v.inputHandler.of((n,e,t,i)=>{if((Eb?n.composing:n.compositionStarted)||n.state.readOnly)return!1;let s=n.state.selection.main;if(i.length>2||i.length==2&&qe(ae(i,0))==1||e!=s.from||t!=s.to)return!1;let r=zb(n.state,i);return r?(n.dispatch(r),!0):!1}),_b=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let i=fu(n,n.selection.main.head).brackets||rn.brackets,s=null,r=n.changeByRange(o=>{if(o.empty){let l=Ub(n.doc,o.head);for(let a of i)if(a==l&&Bs(n.doc,o.head)==cu(ae(a,0)))return{changes:{from:o.head-a.length,to:o.head+a.length},range:y.cursor(o.head-a.length)}}return{range:s=o}});return s||e(n.update(r,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},Db=[{key:"Backspace",run:_b}];function zb(n,e){let t=fu(n,n.selection.main.head),i=t.brackets||rn.brackets;for(let s of i){let r=cu(ae(s,0));if(e==s)return r==s?Nb(n,s,i.indexOf(s+s+s)>-1,t):jb(n,s,r,t.before||rn.before);if(e==r&&uu(n,n.selection.main.from))return Bb(n,s,r)}return null}function uu(n,e){let t=!1;return n.field(hu).between(0,n.doc.length,i=>{i==e&&(t=!0)}),t}function Bs(n,e){let t=n.sliceString(e,e+2);return t.slice(0,qe(ae(t,0)))}function Ub(n,e){let t=n.sliceString(e-2,e);return qe(ae(t,0))==t.length?t:t.slice(1)}function jb(n,e,t,i){let s=null,r=n.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:_t.of(o.to+e.length),range:y.range(o.anchor+e.length,o.head+e.length)};let l=Bs(n.doc,o.head);return!l||/\s/.test(l)||i.indexOf(l)>-1?{changes:{insert:e+t,from:o.head},effects:_t.of(o.head+e.length),range:y.cursor(o.head+e.length)}:{range:s=o}});return s?null:n.update(r,{scrollIntoView:!0,userEvent:"input.type"})}function Bb(n,e,t){let i=null,s=n.changeByRange(r=>r.empty&&Bs(n.doc,r.head)==t?{changes:{from:r.head,to:r.head+t.length,insert:t},range:y.cursor(r.head+t.length)}:i={range:r});return i?null:n.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function Nb(n,e,t,i){let s=i.stringPrefixes||rn.stringPrefixes,r=null,o=n.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:_t.of(l.to+e.length),range:y.range(l.anchor+e.length,l.head+e.length)};let a=l.head,h=Bs(n.doc,a),c;if(h==e){if(ch(n,a))return{changes:{insert:e+e,from:a},effects:_t.of(a+e.length),range:y.cursor(a+e.length)};if(uu(n,a)){let u=t&&n.sliceDoc(a,a+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:a,to:a+u.length,insert:u},range:y.cursor(a+u.length)}}}else{if(t&&n.sliceDoc(a-2*e.length,a)==e+e&&(c=fh(n,a-2*e.length,s))>-1&&ch(n,c))return{changes:{insert:e+e+e+e,from:a},effects:_t.of(a+e.length),range:y.cursor(a+e.length)};if(n.charCategorizer(a)(h)!=F.Word&&fh(n,a,s)>-1&&!Ib(n,a,e,s))return{changes:{insert:e+e,from:a},effects:_t.of(a+e.length),range:y.cursor(a+e.length)}}return{range:r=l}});return r?null:n.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function ch(n,e){let t=J(n).resolveInner(e+1);return t.parent&&t.from==e}function Ib(n,e,t,i){let s=J(n).resolveInner(e,-1),r=i.reduce((o,l)=>Math.max(o,l.length),0);for(let o=0;o<5;o++){let l=n.sliceDoc(s.from,Math.min(s.to,s.from+t.length+r)),a=l.indexOf(t);if(!a||a>-1&&i.indexOf(l.slice(0,a))>-1){let c=s.firstChild;for(;c&&c.from==s.from&&c.to-c.from>t.length+a;){if(n.sliceDoc(c.to-t.length,c.to)==t)return!1;c=c.firstChild}return!0}let h=s.to==e&&s.parent;if(!h)break;s=h}return!1}function fh(n,e,t){let i=n.charCategorizer(e);if(i(n.sliceDoc(e-1,e))!=F.Word)return e;for(let s of t){let r=e-s.length;if(n.sliceDoc(r,e)==s&&i(n.sliceDoc(r-1,r))!=F.Word)return r}return-1}function Gb(n={}){return[Pb,Pe,fe.of(n),wb,Lb,lu]}const du=[{key:"Ctrl-Space",run:bb},{key:"Escape",run:yb},{key:"ArrowDown",run:qn(!0)},{key:"ArrowUp",run:qn(!1)},{key:"PageDown",run:qn(!0,"page")},{key:"PageUp",run:qn(!1,"page")},{key:"Enter",run:gb}],Lb=Xt.highest(un.computeN([fe],n=>n.facet(fe).defaultKeymap?[du]:[])),Ou=[we("function ${name}(${params}) {\n	${}\n}",{label:"function",detail:"definition",type:"keyword"}),we("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n	${}\n}",{label:"for",detail:"loop",type:"keyword"}),we("for (let ${name} of ${collection}) {\n	${}\n}",{label:"for",detail:"of loop",type:"keyword"}),we("do {\n	${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),we("while (${}) {\n	${}\n}",{label:"while",detail:"loop",type:"keyword"}),we(`try {
+	\${}
+} catch (\${error}) {
+	\${}
+}`,{label:"try",detail:"/ catch block",type:"keyword"}),we("if (${}) {\n	${}\n}",{label:"if",detail:"block",type:"keyword"}),we(`if (\${}) {
+	\${}
+} else {
+	\${}
+}`,{label:"if",detail:"/ else block",type:"keyword"}),we(`class \${name} {
+	constructor(\${params}) {
+		\${}
+	}
+}`,{label:"class",detail:"definition",type:"keyword"}),we('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),we('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],Fb=Ou.concat([we("interface ${name} {\n	${}\n}",{label:"interface",detail:"definition",type:"keyword"}),we("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),we("enum ${name} {\n	${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),uh=new Rf,pu=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Zi(n){return(e,t)=>{let i=e.node.getChild("VariableDefinition");return i&&t(i,n),!0}}const Hb=["FunctionDeclaration"],Kb={FunctionDeclaration:Zi("function"),ClassDeclaration:Zi("class"),ClassExpression:()=>!0,EnumDeclaration:Zi("constant"),TypeAliasDeclaration:Zi("type"),NamespaceDeclaration:Zi("namespace"),VariableDefinition(n,e){n.matchContext(Hb)||e(n,"variable")},TypeDefinition(n,e){e(n,"type")},__proto__:null};function mu(n,e){let t=uh.get(e);if(t)return t;let i=[],s=!0;function r(o,l){let a=n.sliceString(o.from,o.to);i.push({label:a,type:l})}return e.cursor(I.IncludeAnonymous).iterate(o=>{if(s)s=!1;else if(o.name){let l=Kb[o.name];if(l&&l(o,r)||pu.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of mu(n,o.node))i.push(l);return!1}}),uh.set(e,i),i}const dh=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,gu=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName",".","?."];function Jb(n){let e=J(n.state).resolveInner(n.pos,-1);if(gu.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&dh.test(n.state.sliceDoc(e.from,e.to));if(!t&&!n.explicit)return null;let i=[];for(let s=e;s;s=s.parent)pu.has(s.name)&&(i=i.concat(mu(n.state.doc,s)));return{options:i,from:t?e.from:n.pos,validFor:dh}}const ot=ui.define({name:"javascript",parser:K0.configure({props:[zs.add({IfStatement:Jn({except:/^\s*({|else\b)/}),TryStatement:Jn({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Cg,SwitchBody:n=>{let e=n.textAfter,t=/^\s*\}/.test(e),i=/^\s*(case|default)\b/.test(e);return n.baseIndent+(t?0:i?1:2)*n.unit},Block:Tg({closing:"}"}),ArrowFunction:n=>n.baseIndent+n.unit,"TemplateString BlockComment":()=>null,"Statement Property":Jn({except:/^{/}),JSXElement(n){let e=/^\s*<\//.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},JSXEscape(n){let e=/\s*\}/.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},"JSXOpenTag JSXSelfClosingTag"(n){return n.column(n.node.from)+n.unit}}),Us.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":Vf,BlockComment(n){return{from:n.from+2,to:n.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),bu={test:n=>/^JSX/.test(n.name),facet:Wf({commentTokens:{block:{open:"{/*",close:"*/}"}}})},yu=ot.configure({dialect:"ts"},"typescript"),Su=ot.configure({dialect:"jsx",props:[Jo.add(n=>n.isTop?[bu]:void 0)]}),xu=ot.configure({dialect:"jsx ts",props:[Jo.add(n=>n.isTop?[bu]:void 0)]},"typescript");let Qu=n=>({label:n,type:"keyword"});const wu="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(Qu),e1=wu.concat(["declare","implements","private","protected","public"].map(Qu));function t1(n={}){let e=n.jsx?n.typescript?xu:Su:n.typescript?yu:ot,t=n.typescript?Fb.concat(e1):Ou.concat(wu);return new el(e,[ot.data.of({autocomplete:eb(gu,nu(t))}),ot.data.of({autocomplete:Jb}),n.jsx?s1:[]])}function i1(n){for(;;){if(n.name=="JSXOpenTag"||n.name=="JSXSelfClosingTag"||n.name=="JSXFragmentTag")return n;if(n.name=="JSXEscape"||!n.parent)return null;n=n.parent}}function Oh(n,e,t=n.length){for(let i=e==null?void 0:e.firstChild;i;i=i.nextSibling)if(i.name=="JSXIdentifier"||i.name=="JSXBuiltin"||i.name=="JSXNamespacedName"||i.name=="JSXMemberExpression")return n.sliceString(i.from,Math.min(i.to,t));return""}const n1=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),s1=v.inputHandler.of((n,e,t,i,s)=>{if((n1?n.composing:n.compositionStarted)||n.state.readOnly||e!=t||i!=">"&&i!="/"||!ot.isActiveAt(n.state,e,-1))return!1;let r=s(),{state:o}=r,l=o.changeByRange(a=>{var h;let{head:c}=a,f=J(o).resolveInner(c-1,-1),u;if(f.name=="JSXStartTag"&&(f=f.parent),!(o.doc.sliceString(c-1,c)!=i||f.name=="JSXAttributeValue"&&f.to>c)){if(i==">"&&f.name=="JSXFragmentTag")return{range:a,changes:{from:c,insert:"</>"}};if(i=="/"&&f.name=="JSXStartCloseTag"){let d=f.parent,O=d.parent;if(O&&d.from==c-2&&((u=Oh(o.doc,O.firstChild,c))||((h=O.firstChild)===null||h===void 0?void 0:h.name)=="JSXFragmentTag")){let m=`${u}>`;return{range:y.cursor(c+m.length,-1),changes:{from:c,insert:m}}}}else if(i==">"){let d=i1(f);if(d&&d.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(c,c+2))&&(u=Oh(o.doc,d,c)))return{range:a,changes:{from:c,insert:`</${u}>`}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([r,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),r1=99,ph=1,o1=100,l1=101,mh=2,$u=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],a1=58,h1=40,Pu=95,c1=91,is=45,f1=46,u1=35,d1=37,O1=38,p1=92,m1=10;function on(n){return n>=65&&n<=90||n>=97&&n<=122||n>=161}function ku(n){return n>=48&&n<=57}const g1=new Ne((n,e)=>{for(let t=!1,i=0,s=0;;s++){let{next:r}=n;if(on(r)||r==is||r==Pu||t&&ku(r))!t&&(r!=is||s>0)&&(t=!0),i===s&&r==is&&i++,n.advance();else if(r==p1&&n.peek(1)!=m1)n.advance(),n.next>-1&&n.advance(),t=!0;else{t&&n.acceptToken(r==h1?o1:i==2&&e.canShift(mh)?mh:l1);break}}}),b1=new Ne(n=>{if($u.includes(n.peek(-1))){let{next:e}=n;(on(e)||e==Pu||e==u1||e==f1||e==c1||e==a1&&on(n.peek(1))||e==is||e==O1)&&n.acceptToken(r1)}}),y1=new Ne(n=>{if(!$u.includes(n.peek(-1))){let{next:e}=n;if(e==d1&&(n.advance(),n.acceptToken(ph)),on(e)){do n.advance();while(on(n.next)||ku(n.next));n.acceptToken(ph)}}}),S1=Vs({"AtKeyword import charset namespace keyframes media supports":p.definitionKeyword,"from to selector":p.keyword,NamespaceName:p.namespace,KeyframeName:p.labelName,KeyframeRangeName:p.operatorKeyword,TagName:p.tagName,ClassName:p.className,PseudoClassName:p.constant(p.className),IdName:p.labelName,"FeatureName PropertyName":p.propertyName,AttributeName:p.attributeName,NumberLiteral:p.number,KeywordQuery:p.keyword,UnaryQueryOp:p.operatorKeyword,"CallTag ValueName":p.atom,VariableName:p.variableName,Callee:p.operatorKeyword,Unit:p.unit,"UniversalSelector NestingSelector":p.definitionOperator,MatchOp:p.compareOperator,"ChildOp SiblingOp, LogicOp":p.logicOperator,BinOp:p.arithmeticOperator,Important:p.modifier,Comment:p.blockComment,ColorLiteral:p.color,"ParenthesizedContent StringLiteral":p.string,":":p.punctuation,"PseudoOp #":p.derefOperator,"; ,":p.separator,"( )":p.paren,"[ ]":p.squareBracket,"{ }":p.brace}),x1={__proto__:null,lang:32,"nth-child":32,"nth-last-child":32,"nth-of-type":32,"nth-last-of-type":32,dir:32,"host-context":32,url:60,"url-prefix":60,domain:60,regexp:60,selector:138},Q1={__proto__:null,"@import":118,"@media":142,"@charset":146,"@namespace":150,"@keyframes":156,"@supports":168},w1={__proto__:null,not:132,only:132},$1=Oi.deserialize({version:14,states:":^QYQ[OOO#_Q[OOP#fOWOOOOQP'#Cd'#CdOOQP'#Cc'#CcO#kQ[O'#CfO$_QXO'#CaO$fQ[O'#ChO$qQ[O'#DTO$vQ[O'#DWOOQP'#Em'#EmO${QdO'#DgO%jQ[O'#DtO${QdO'#DvO%{Q[O'#DxO&WQ[O'#D{O&`Q[O'#ERO&nQ[O'#ETOOQS'#El'#ElOOQS'#EW'#EWQYQ[OOO&uQXO'#CdO'jQWO'#DcO'oQWO'#EsO'zQ[O'#EsQOQWOOP(UO#tO'#C_POOO)C@[)C@[OOQP'#Cg'#CgOOQP,59Q,59QO#kQ[O,59QO(aQ[O'#E[O({QWO,58{O)TQ[O,59SO$qQ[O,59oO$vQ[O,59rO(aQ[O,59uO(aQ[O,59wO(aQ[O,59xO)`Q[O'#DbOOQS,58{,58{OOQP'#Ck'#CkOOQO'#DR'#DROOQP,59S,59SO)gQWO,59SO)lQWO,59SOOQP'#DV'#DVOOQP,59o,59oOOQO'#DX'#DXO)qQ`O,59rOOQS'#Cp'#CpO${QdO'#CqO)yQvO'#CsO+ZQtO,5:ROOQO'#Cx'#CxO)lQWO'#CwO+oQWO'#CyO+tQ[O'#DOOOQS'#Ep'#EpOOQO'#Dj'#DjO+|Q[O'#DqO,[QWO'#EtO&`Q[O'#DoO,jQWO'#DrOOQO'#Eu'#EuO)OQWO,5:`O,oQpO,5:bOOQS'#Dz'#DzO,wQWO,5:dO,|Q[O,5:dOOQO'#D}'#D}O-UQWO,5:gO-ZQWO,5:mO-cQWO,5:oOOQS-E8U-E8UO${QdO,59}O-kQ[O'#E^O-xQWO,5;_O-xQWO,5;_POOO'#EV'#EVP.TO#tO,58yPOOO,58y,58yOOQP1G.l1G.lO.zQXO,5:vOOQO-E8Y-E8YOOQS1G.g1G.gOOQP1G.n1G.nO)gQWO1G.nO)lQWO1G.nOOQP1G/Z1G/ZO/XQ`O1G/^O/rQXO1G/aO0YQXO1G/cO0pQXO1G/dO1WQWO,59|O1]Q[O'#DSO1dQdO'#CoOOQP1G/^1G/^O${QdO1G/^O1kQpO,59]OOQS,59_,59_O${QdO,59aO1sQWO1G/mOOQS,59c,59cO1xQ!bO,59eOOQS'#DP'#DPOOQS'#EY'#EYO2QQ[O,59jOOQS,59j,59jO2YQWO'#DjO2eQWO,5:VO2jQWO,5:]O&`Q[O,5:XO&`Q[O'#E_O2rQWO,5;`O2}QWO,5:ZO(aQ[O,5:^OOQS1G/z1G/zOOQS1G/|1G/|OOQS1G0O1G0OO3`QWO1G0OO3eQdO'#EOOOQS1G0R1G0ROOQS1G0X1G0XOOQS1G0Z1G0ZO3pQtO1G/iOOQO,5:x,5:xO4WQ[O,5:xOOQO-E8[-E8[O4eQWO1G0yPOOO-E8T-E8TPOOO1G.e1G.eOOQP7+$Y7+$YOOQP7+$x7+$xO${QdO7+$xOOQS1G/h1G/hO4pQXO'#ErO4wQWO,59nO4|QtO'#EXO5tQdO'#EoO6OQWO,59ZO6TQpO7+$xOOQS1G.w1G.wOOQS1G.{1G.{OOQS7+%X7+%XO6]QWO1G/POOQS-E8W-E8WOOQS1G/U1G/UO${QdO1G/qOOQO1G/w1G/wOOQO1G/s1G/sO6bQWO,5:yOOQO-E8]-E8]O6pQXO1G/xOOQS7+%j7+%jO6wQYO'#CsOOQO'#EQ'#EQO7SQ`O'#EPOOQO'#EP'#EPO7_QWO'#E`O7gQdO,5:jOOQS,5:j,5:jO7rQtO'#E]O${QdO'#E]O8sQdO7+%TOOQO7+%T7+%TOOQO1G0d1G0dO9WQpO<<HdO9`QWO,5;^OOQP1G/Y1G/YOOQS-E8V-E8VO${QdO'#EZO9hQWO,5;ZOOQT1G.u1G.uOOQP<<Hd<<HdOOQS7+$k7+$kO9pQdO7+%]OOQO7+%d7+%dOOQO,5:k,5:kO3hQdO'#EaO7_QWO,5:zOOQS,5:z,5:zOOQS-E8^-E8^OOQS1G0U1G0UO9wQtO,5:wOOQS-E8Z-E8ZOOQO<<Ho<<HoOOQPAN>OAN>OO:xQdO,5:uOOQO-E8X-E8XOOQO<<Hw<<HwOOQO,5:{,5:{OOQO-E8_-E8_OOQS1G0f1G0f",stateData:";[~O#ZOS#[QQ~OUYOXYO]VO^VOqXOxWO![aO!]ZO!i[O!k]O!m^O!p_O!v`O#XRO#bTO~OQfOUYOXYO]VO^VOqXOxWO![aO!]ZO!i[O!k]O!m^O!p_O!v`O#XeO#bTO~O#U#gP~P!ZO#[jO~O#XlO~O]qO^qOqsOtoOxrO!OtO!RvO#VuO#bnO~O!TwO~P#pO`}O#WzO#XyO~O#X!OO~O#X!QO~OQ![Ob!TOf![Oh![On!YOq!ZO#W!WO#X!SO#e!UO~Ob!^O!d!`O!g!aO#X!]O!T#hP~Oh!fOn!YO#X!eO~Oh!hO#X!hO~Ob!^O!d!`O!g!aO#X!]O~O!Y#hP~P%jO]WX]!WX^WXqWXtWXxWX!OWX!RWX!TWX#VWX#bWX~O]!mO~O!Y!nO#U#gX!S#gX~O#U#gX!S#gX~P!ZO#]!qO#^!qO#_!sO~OUYOXYO]VO^VOqXOxWO#XRO#bTO~OtoO!TwO~O`!zO#WzO#XyO~O!S#gP~P!ZOb#RO~Ob#SO~Op#TO|#UO~OP#WObgXjgX!YgX!dgX!ggX#XgXagXQgXfgXhgXngXqgXtgX!XgX#UgX#WgX#egXpgX!SgX~Ob!^Oj#XO!d!`O!g!aO#X!]O!Y#hP~Ob#[O~Op#`O#X#]O~Ob!^O!d!`O!g!aO#X#aO~Ot#eO!b#dO!T#hX!Y#hX~Ob#hO~Oj#XO!Y#jO~O!Y#kO~Oh#lOn!YO~O!T#mO~O!TwO!b#dO~O!TwO!Y#pO~O!Y#QX#U#QX!S#QX~P!ZO!Y!nO#U#ga!S#ga~O#]!qO#^!qO#_#wO~O]qO^qOqsOxrO!OtO!RvO#VuO#bnO~Ot#Oa!T#Oaa#Oa~P.`Op#yO|#zO~O]qO^qOqsOxrO#bnO~Ot}i!O}i!R}i!T}i#V}ia}i~P/aOt!Pi!O!Pi!R!Pi!T!Pi#V!Pia!Pi~P/aOt!Qi!O!Qi!R!Qi!T!Qi#V!Qia!Qi~P/aO!S#{O~Oa#fP~P(aOa#cP~P${Oa$SOj#XO~O!Y$UO~Oh$VOo$VO~Op$XO#X#]O~O]!`Xa!^X!b!^X~O]$YO~Oa$ZO!b#dO~Ot#eO!T#ha!Y#ha~O!b#dOt!ca!T!ca!Y!caa!ca~O!Y$`O~O!S$gO#X$bO#e$aO~Oj#XOt$iO!X$kO!Y!Vi#U!Vi!S!Vi~P${O!Y#Qa#U#Qa!S#Qa~P!ZO!Y!nO#U#gi!S#gi~Oa#fX~P#pOa$oO~Oj#XOQ!{Xa!{Xb!{Xf!{Xh!{Xn!{Xq!{Xt!{X#W!{X#X!{X#e!{X~Ot$qOa#cX~P${Oa$sO~Oj#XOp$tO~Oa$uO~O!b#dOt#Ra!T#Ra!Y#Ra~Oa$wO~P.`OP#WOtgX!TgX~O#e$aOt!sX!T!sX~Ot$yO!TwO~O!S$}O#X$bO#e$aO~Oj#XOQ#PXb#PXf#PXh#PXn#PXq#PXt#PX!X#PX!Y#PX#U#PX#W#PX#X#PX#e#PX!S#PX~Ot$iO!X%QO!Y!Vq#U!Vq!S!Vq~P${Oj#XOp%RO~OtoOa#fa~Ot$qOa#ca~Oa%UO~P${Oj#XOQ#Pab#Paf#Pah#Pan#Paq#Pat#Pa!X#Pa!Y#Pa#U#Pa#W#Pa#X#Pa#e#Pa!S#Pa~Oa!}at!}a~P${O#Zo#[#ej!R#e~",goto:"-g#jPPP#kP#nP#w$WP#w$g#wPP$mPPP$s$|$|P%`P$|P$|%z&^PPPP$|&vP&z'Q#wP'W#w'^P#wP#w#wPPP'd'y(WPP#nPP(_(_(i(_P(_P(_(_P#nP#nP#nP(l#nP(o(r(u(|#nP#nP)R)X)h)v)|*S*^*d*n*t*zPPPPPPPPPP+Q+ZP+v+yP,o,r,x-RRkQ_bOPdhw!n#skYOPdhotuvw!n#R#h#skSOPdhotuvw!n#R#h#sQmTR!tnQ{VR!xqQ!x}Q#Z!XR#x!zq![Z]!T!m#S#U#X#q#z$P$Y$i$j$q$v%Sp![Z]!T!m#S#U#X#q#z$P$Y$i$j$q$v%SU$d#m$f$yR$x$cq!XZ]!T!m#S#U#X#q#z$P$Y$i$j$q$v%Sp![Z]!T!m#S#U#X#q#z$P$Y$i$j$q$v%SQ!f^R#l!gT#^!Z#_Q|VR!yqQ!x|R#x!yQ!PWR!{rQ!RXR!|sQxUQ!wpQ#i!cQ#o!jQ#p!kQ${$eR%X$zSgPwQ!phQ#r!nR$l#sZfPhw!n#sa!b[`a!V!^!`#d#eR#b!^R!g^R!i_R#n!iS$e#m$fR%V$yV$c#m$f$yQ!rjR#v!rQdOShPwU!ldh#sR#s!nQ$P#SU$p$P$v%SQ$v$YR%S$qQ#_!ZR$W#_Q$r$PR%T$rQpUS!vp$nR$n#|Q$j#qR%P$jQ!ogS#t!o#uR#u!pQ#f!_R$^#fQ$f#mR$|$fQ$z$eR%W$z_cOPdhw!n#s^UOPdhw!n#sQ!uoQ!}tQ#OuQ#PvQ#|#RR$_#hR$Q#SQ!VZQ!d]Q#V!TQ#q!m[$O#S$P$Y$q$v%SQ$R#UQ$T#XS$h#q$jQ$m#zR%O$iR#}#RQiPR#QwQ!c[Q!kaR#Y!VU!_[a!VQ!j`Q#c!^Q#g!`Q$[#dR$]#e",nodeNames:"⚠ Unit VariableName Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName , PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp } { Block Declaration PropertyName Important ; ImportStatement AtKeyword import KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports AtRule Styles",maxTerm:117,nodeProps:[["isolate",-2,3,24,""],["openedBy",17,"(",32,"[",50,"{"],["closedBy",18,")",33,"]",51,"}"]],propSources:[S1],skippedNodes:[0,3,87],repeatNodeCount:11,tokenData:"J^~R!^OX$}X^%u^p$}pq%uqr)Xrs.Rst/utu6duv$}vw7^wx7oxy9^yz9oz{9t{|:_|}?Q}!O?c!O!P@Q!P!Q@i!Q![Ab![!]B]!]!^CX!^!_$}!_!`Cj!`!aC{!a!b$}!b!cDw!c!}$}!}#OFa#O#P$}#P#QFr#Q#R6d#R#T$}#T#UGT#U#c$}#c#dHf#d#o$}#o#pH{#p#q6d#q#rI^#r#sIo#s#y$}#y#z%u#z$f$}$f$g%u$g#BY$}#BY#BZ%u#BZ$IS$}$IS$I_%u$I_$I|$}$I|$JO%u$JO$JT$}$JT$JU%u$JU$KV$}$KV$KW%u$KW&FU$}&FU&FV%u&FV;'S$};'S;=`JW<%lO$}`%QSOy%^z;'S%^;'S;=`%o<%lO%^`%cSo`Oy%^z;'S%^;'S;=`%o<%lO%^`%rP;=`<%l%^~%zh#Z~OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o<%lO%^~'mh#Z~o`OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o<%lO%^l)[UOy%^z#]%^#]#^)n#^;'S%^;'S;=`%o<%lO%^l)sUo`Oy%^z#a%^#a#b*V#b;'S%^;'S;=`%o<%lO%^l*[Uo`Oy%^z#d%^#d#e*n#e;'S%^;'S;=`%o<%lO%^l*sUo`Oy%^z#c%^#c#d+V#d;'S%^;'S;=`%o<%lO%^l+[Uo`Oy%^z#f%^#f#g+n#g;'S%^;'S;=`%o<%lO%^l+sUo`Oy%^z#h%^#h#i,V#i;'S%^;'S;=`%o<%lO%^l,[Uo`Oy%^z#T%^#T#U,n#U;'S%^;'S;=`%o<%lO%^l,sUo`Oy%^z#b%^#b#c-V#c;'S%^;'S;=`%o<%lO%^l-[Uo`Oy%^z#h%^#h#i-n#i;'S%^;'S;=`%o<%lO%^l-uS!X[o`Oy%^z;'S%^;'S;=`%o<%lO%^~.UWOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o<%lO.R~.sOh~~.vRO;'S.R;'S;=`/P;=`O.R~/SXOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o;=`<%l.R<%lO.R~/rP;=`<%l.Rn/zYxQOy%^z!Q%^!Q![0j![!c%^!c!i0j!i#T%^#T#Z0j#Z;'S%^;'S;=`%o<%lO%^l0oYo`Oy%^z!Q%^!Q![1_![!c%^!c!i1_!i#T%^#T#Z1_#Z;'S%^;'S;=`%o<%lO%^l1dYo`Oy%^z!Q%^!Q![2S![!c%^!c!i2S!i#T%^#T#Z2S#Z;'S%^;'S;=`%o<%lO%^l2ZYf[o`Oy%^z!Q%^!Q![2y![!c%^!c!i2y!i#T%^#T#Z2y#Z;'S%^;'S;=`%o<%lO%^l3QYf[o`Oy%^z!Q%^!Q![3p![!c%^!c!i3p!i#T%^#T#Z3p#Z;'S%^;'S;=`%o<%lO%^l3uYo`Oy%^z!Q%^!Q![4e![!c%^!c!i4e!i#T%^#T#Z4e#Z;'S%^;'S;=`%o<%lO%^l4lYf[o`Oy%^z!Q%^!Q![5[![!c%^!c!i5[!i#T%^#T#Z5[#Z;'S%^;'S;=`%o<%lO%^l5aYo`Oy%^z!Q%^!Q![6P![!c%^!c!i6P!i#T%^#T#Z6P#Z;'S%^;'S;=`%o<%lO%^l6WSf[o`Oy%^z;'S%^;'S;=`%o<%lO%^d6gUOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^d7QS|So`Oy%^z;'S%^;'S;=`%o<%lO%^b7cSXQOy%^z;'S%^;'S;=`%o<%lO%^~7rWOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W<%lO7o~8_RO;'S7o;'S;=`8h;=`O7o~8kXOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W;=`<%l7o<%lO7o~9ZP;=`<%l7on9cSb^Oy%^z;'S%^;'S;=`%o<%lO%^~9tOa~n9{UUQjWOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^n:fWjW!RQOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^l;TUo`Oy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^l;nYo`#e[Oy%^z!Q%^!Q![;g![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^l<cYo`Oy%^z{%^{|=R|}%^}!O=R!O!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^l=WUo`Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^l=qUo`#e[Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^l>[[o`#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^n?VSt^Oy%^z;'S%^;'S;=`%o<%lO%^l?hWjWOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^n@VU#bQOy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^~@nTjWOy%^z{@}{;'S%^;'S;=`%o<%lO%^~AUSo`#[~Oy%^z;'S%^;'S;=`%o<%lO%^lAg[#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^bBbU]QOy%^z![%^![!]Bt!];'S%^;'S;=`%o<%lO%^bB{S^Qo`Oy%^z;'S%^;'S;=`%o<%lO%^nC^S!Y^Oy%^z;'S%^;'S;=`%o<%lO%^dCoS|SOy%^z;'S%^;'S;=`%o<%lO%^bDQU!OQOy%^z!`%^!`!aDd!a;'S%^;'S;=`%o<%lO%^bDkS!OQo`Oy%^z;'S%^;'S;=`%o<%lO%^bDzWOy%^z!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^bEk[![Qo`Oy%^z}%^}!OEd!O!Q%^!Q![Ed![!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^nFfSq^Oy%^z;'S%^;'S;=`%o<%lO%^nFwSp^Oy%^z;'S%^;'S;=`%o<%lO%^bGWUOy%^z#b%^#b#cGj#c;'S%^;'S;=`%o<%lO%^bGoUo`Oy%^z#W%^#W#XHR#X;'S%^;'S;=`%o<%lO%^bHYS!bQo`Oy%^z;'S%^;'S;=`%o<%lO%^bHiUOy%^z#f%^#f#gHR#g;'S%^;'S;=`%o<%lO%^fIQS!TUOy%^z;'S%^;'S;=`%o<%lO%^nIcS!S^Oy%^z;'S%^;'S;=`%o<%lO%^fItU!RQOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^`JZP;=`<%l$}",tokenizers:[b1,y1,g1,1,2,3,4,new xs("m~RRYZ[z{a~~g~aO#^~~dP!P!Qg~lO#_~~",28,105)],topRules:{StyleSheet:[0,4],Styles:[1,86]},specialized:[{term:100,get:n=>x1[n]||-1},{term:58,get:n=>Q1[n]||-1},{term:101,get:n=>w1[n]||-1}],tokenPrec:1200});let xr=null;function Qr(){if(!xr&&typeof document=="object"&&document.body){let{style:n}=document.body,e=[],t=new Set;for(let i in n)i!="cssText"&&i!="cssFloat"&&typeof n[i]=="string"&&(/[A-Z]/.test(i)&&(i=i.replace(/[A-Z]/g,s=>"-"+s.toLowerCase())),t.has(i)||(e.push(i),t.add(i)));xr=e.sort().map(i=>({type:"property",label:i}))}return xr||[]}const gh=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(n=>({type:"class",label:n})),bh=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(n=>({type:"keyword",label:n})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(n=>({type:"constant",label:n}))),P1=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(n=>({type:"type",label:n})),gt=/^(\w[\w-]*|-\w[\w-]*|)$/,k1=/^-(-[\w-]*)?$/;function v1(n,e){var t;if((n.name=="("||n.type.isError)&&(n=n.parent||n),n.name!="ArgList")return!1;let i=(t=n.parent)===null||t===void 0?void 0:t.firstChild;return(i==null?void 0:i.name)!="Callee"?!1:e.sliceString(i.from,i.to)=="var"}const yh=new Rf,Z1=["Declaration"];function T1(n){for(let e=n;;){if(e.type.isTop)return e;if(!(e=e.parent))return n}}function vu(n,e,t){if(e.to-e.from>4096){let i=yh.get(e);if(i)return i;let s=[],r=new Set,o=e.cursor(I.IncludeAnonymous);if(o.firstChild())do for(let l of vu(n,o.node,t))r.has(l.label)||(r.add(l.label),s.push(l));while(o.nextSibling());return yh.set(e,s),s}else{let i=[],s=new Set;return e.cursor().iterate(r=>{var o;if(t(r)&&r.matchContext(Z1)&&((o=r.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let l=n.sliceString(r.from,r.to);s.has(l)||(s.add(l),i.push({label:l,type:"variable"}))}}),i}}const C1=n=>e=>{let{state:t,pos:i}=e,s=J(t).resolveInner(i,-1),r=s.type.isError&&s.from==s.to-1&&t.doc.sliceString(s.from,s.to)=="-";if(s.name=="PropertyName"||(r||s.name=="TagName")&&/^(Block|Styles)$/.test(s.resolve(s.to).name))return{from:s.from,options:Qr(),validFor:gt};if(s.name=="ValueName")return{from:s.from,options:bh,validFor:gt};if(s.name=="PseudoClassName")return{from:s.from,options:gh,validFor:gt};if(n(s)||(e.explicit||r)&&v1(s,t.doc))return{from:n(s)||r?s.from:i,options:vu(t.doc,T1(s),n),validFor:k1};if(s.name=="TagName"){for(let{parent:a}=s;a;a=a.parent)if(a.name=="Block")return{from:s.from,options:Qr(),validFor:gt};return{from:s.from,options:P1,validFor:gt}}if(!e.explicit)return null;let o=s.resolve(i),l=o.childBefore(i);return l&&l.name==":"&&o.name=="PseudoClassSelector"?{from:i,options:gh,validFor:gt}:l&&l.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:i,options:bh,validFor:gt}:o.name=="Block"||o.name=="Styles"?{from:i,options:Qr(),validFor:gt}:null},R1=C1(n=>n.name=="VariableName"),$s=ui.define({name:"css",parser:$1.configure({props:[zs.add({Declaration:Jn()}),Us.add({"Block KeyframeList":Vf})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function A1(){return new el($s,$s.data.of({autocomplete:R1}))}const X1=54,M1=1,W1=55,Y1=2,q1=56,E1=3,Sh=4,V1=5,Ps=6,Zu=7,Tu=8,Cu=9,Ru=10,_1=11,D1=12,z1=13,wr=57,U1=14,xh=58,Au=20,j1=22,Xu=23,B1=24,vo=26,Mu=27,N1=28,I1=31,G1=34,L1=36,F1=37,H1=0,K1=1,J1={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},ey={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},Qh={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function ty(n){return n==45||n==46||n==58||n>=65&&n<=90||n==95||n>=97&&n<=122||n>=161}function Wu(n){return n==9||n==10||n==13||n==32}let wh=null,$h=null,Ph=0;function Zo(n,e){let t=n.pos+e;if(Ph==t&&$h==n)return wh;let i=n.peek(e);for(;Wu(i);)i=n.peek(++e);let s="";for(;ty(i);)s+=String.fromCharCode(i),i=n.peek(++e);return $h=n,Ph=t,wh=s?s.toLowerCase():i==iy||i==ny?void 0:null}const Yu=60,ks=62,cl=47,iy=63,ny=33,sy=45;function kh(n,e){this.name=n,this.parent=e}const ry=[Ps,Ru,Zu,Tu,Cu],oy=new eu({start:null,shift(n,e,t,i){return ry.indexOf(e)>-1?new kh(Zo(i,1)||"",n):n},reduce(n,e){return e==Au&&n?n.parent:n},reuse(n,e,t,i){let s=e.type.id;return s==Ps||s==L1?new kh(Zo(i,1)||"",n):n},strict:!1}),ly=new Ne((n,e)=>{if(n.next!=Yu){n.next<0&&e.context&&n.acceptToken(wr);return}n.advance();let t=n.next==cl;t&&n.advance();let i=Zo(n,0);if(i===void 0)return;if(!i)return n.acceptToken(t?U1:Ps);let s=e.context?e.context.name:null;if(t){if(i==s)return n.acceptToken(_1);if(s&&ey[s])return n.acceptToken(wr,-2);if(e.dialectEnabled(H1))return n.acceptToken(D1);for(let r=e.context;r;r=r.parent)if(r.name==i)return;n.acceptToken(z1)}else{if(i=="script")return n.acceptToken(Zu);if(i=="style")return n.acceptToken(Tu);if(i=="textarea")return n.acceptToken(Cu);if(J1.hasOwnProperty(i))return n.acceptToken(Ru);s&&Qh[s]&&Qh[s][i]?n.acceptToken(wr,-1):n.acceptToken(Ps)}},{contextual:!0}),ay=new Ne(n=>{for(let e=0,t=0;;t++){if(n.next<0){t&&n.acceptToken(xh);break}if(n.next==sy)e++;else if(n.next==ks&&e>=2){t>=3&&n.acceptToken(xh,-2);break}else e=0;n.advance()}});function hy(n){for(;n;n=n.parent)if(n.name=="svg"||n.name=="math")return!0;return!1}const cy=new Ne((n,e)=>{if(n.next==cl&&n.peek(1)==ks){let t=e.dialectEnabled(K1)||hy(e.context);n.acceptToken(t?V1:Sh,2)}else n.next==ks&&n.acceptToken(Sh,1)});function fl(n,e,t){let i=2+n.length;return new Ne(s=>{for(let r=0,o=0,l=0;;l++){if(s.next<0){l&&s.acceptToken(e);break}if(r==0&&s.next==Yu||r==1&&s.next==cl||r>=2&&r<i&&s.next==n.charCodeAt(r-2))r++,o++;else if((r==2||r==i)&&Wu(s.next))o++;else if(r==i&&s.next==ks){l>o?s.acceptToken(e,-o):s.acceptToken(t,-(o-2));break}else if((s.next==10||s.next==13)&&l){s.acceptToken(e,1);break}else r=o=0;s.advance()}})}const fy=fl("script",X1,M1),uy=fl("style",W1,Y1),dy=fl("textarea",q1,E1),Oy=Vs({"Text RawText":p.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":p.angleBracket,TagName:p.tagName,"MismatchedCloseTag/TagName":[p.tagName,p.invalid],AttributeName:p.attributeName,"AttributeValue UnquotedAttributeValue":p.attributeValue,Is:p.definitionOperator,"EntityReference CharacterReference":p.character,Comment:p.blockComment,ProcessingInst:p.processingInstruction,DoctypeDecl:p.documentMeta}),py=Oi.deserialize({version:14,states:",xOVO!rOOO!WQ#tO'#CqO!]Q#tO'#CzO!bQ#tO'#C}O!gQ#tO'#DQO!lQ#tO'#DSO!qOaO'#CpO!|ObO'#CpO#XOdO'#CpO$eO!rO'#CpOOO`'#Cp'#CpO$lO$fO'#DTO$tQ#tO'#DVO$yQ#tO'#DWOOO`'#Dk'#DkOOO`'#DY'#DYQVO!rOOO%OQ&rO,59]O%ZQ&rO,59fO%fQ&rO,59iO%qQ&rO,59lO%|Q&rO,59nOOOa'#D^'#D^O&XOaO'#CxO&dOaO,59[OOOb'#D_'#D_O&lObO'#C{O&wObO,59[OOOd'#D`'#D`O'POdO'#DOO'[OdO,59[OOO`'#Da'#DaO'dO!rO,59[O'kQ#tO'#DROOO`,59[,59[OOOp'#Db'#DbO'pO$fO,59oOOO`,59o,59oO'xQ#|O,59qO'}Q#|O,59rOOO`-E7W-E7WO(SQ&rO'#CsOOQW'#DZ'#DZO(bQ&rO1G.wOOOa1G.w1G.wOOO`1G/Y1G/YO(mQ&rO1G/QOOOb1G/Q1G/QO(xQ&rO1G/TOOOd1G/T1G/TO)TQ&rO1G/WOOO`1G/W1G/WO)`Q&rO1G/YOOOa-E7[-E7[O)kQ#tO'#CyOOO`1G.v1G.vOOOb-E7]-E7]O)pQ#tO'#C|OOOd-E7^-E7^O)uQ#tO'#DPOOO`-E7_-E7_O)zQ#|O,59mOOOp-E7`-E7`OOO`1G/Z1G/ZOOO`1G/]1G/]OOO`1G/^1G/^O*PQ,UO,59_OOQW-E7X-E7XOOOa7+$c7+$cOOO`7+$t7+$tOOOb7+$l7+$lOOOd7+$o7+$oOOO`7+$r7+$rO*[Q#|O,59eO*aQ#|O,59hO*fQ#|O,59kOOO`1G/X1G/XO*kO7[O'#CvO*|OMhO'#CvOOQW1G.y1G.yOOO`1G/P1G/POOO`1G/S1G/SOOO`1G/V1G/VOOOO'#D['#D[O+_O7[O,59bOOQW,59b,59bOOOO'#D]'#D]O+pOMhO,59bOOOO-E7Y-E7YOOQW1G.|1G.|OOOO-E7Z-E7Z",stateData:",]~O!^OS~OUSOVPOWQOXROYTO[]O][O^^O`^Oa^Ob^Oc^Ox^O{_O!dZO~OfaO~OfbO~OfcO~OfdO~OfeO~O!WfOPlP!ZlP~O!XiOQoP!ZoP~O!YlORrP!ZrP~OUSOVPOWQOXROYTOZqO[]O][O^^O`^Oa^Ob^Oc^Ox^O!dZO~O!ZrO~P#dO![sO!euO~OfvO~OfwO~OS|OT}OhyO~OS!POT}OhyO~OS!ROT}OhyO~OS!TOT}OhyO~OS}OT}OhyO~O!WfOPlX!ZlX~OP!WO!Z!XO~O!XiOQoX!ZoX~OQ!ZO!Z!XO~O!YlORrX!ZrX~OR!]O!Z!XO~O!Z!XO~P#dOf!_O~O![sO!e!aO~OS!bO~OS!cO~Oi!dOSgXTgXhgX~OS!fOT!gOhyO~OS!hOT!gOhyO~OS!iOT!gOhyO~OS!jOT!gOhyO~OS!gOT!gOhyO~Of!kO~Of!lO~Of!mO~OS!nO~Ok!qO!`!oO!b!pO~OS!rO~OS!sO~OS!tO~Oa!uOb!uOc!uO!`!wO!a!uO~Oa!xOb!xOc!xO!b!wO!c!xO~Oa!uOb!uOc!uO!`!{O!a!uO~Oa!xOb!xOc!xO!b!{O!c!xO~OT~bac!dx{!d~",goto:"%p!`PPPPPPPPPPPPPPPPPPPP!a!gP!mPP!yP!|#P#S#Y#]#`#f#i#l#r#x!aP!a!aP$O$U$l$r$x%O%U%[%bPPPPPPPP%hX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:67,context:oy,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,21,30,33,36,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,29,32,35,37,"OpenTag"],["group",-9,14,17,18,19,20,39,40,41,42,"Entity",16,"Entity TextContent",-3,28,31,34,"TextContent Entity"],["isolate",-11,21,29,30,32,33,35,36,37,38,41,42,"ltr",-3,26,27,39,""]],propSources:[Oy],skippedNodes:[0],repeatNodeCount:9,tokenData:"!<p!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|c`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bX`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UV`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pT`POv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!cpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({W`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!a`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!a`!cpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYkWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]``P!a`!cp!^^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebhSkWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXhSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0mS1bP;=`<%l0m[1hP;=`<%l/^!V1vchS`P!a`!cpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R<%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`<%l1k!_3[P;=`<%l-_!Z3hV!`h`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_4WihSkWc!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zbkWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOa!R!R7tP;=`<%l7S!Z8OYkWa!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{ihSkWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbhSkWa!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V<QchSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXhSa!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TakWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOb!R!RAwP;=`<%lAY!ZBRYkWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbhSkWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbhSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXhSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!bx`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYlhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_khS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_X`P!a`!cp!eQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZhSfQ`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!a`!cpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!a`!cp!dPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!a`!cpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!a`!cpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!a`!cpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!a`!cpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!a`!cpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!a`!cpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!a`!cpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!cpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO{PP!-nP;=`<%l!-Sq!-xS!cp{POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!a`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!a`{POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!a`!cp{POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!a`!cpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!a`!cpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!a`!cpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!a`!cpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!a`!cpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!a`!cpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!cpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOxPP!7TP;=`<%l!6Vq!7]V!cpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!cpxPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!a`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!a`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!a`xPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!a`!cpxPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!<TXiS`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X",tokenizers:[fy,uy,dy,cy,ly,ay,0,1,2,3,4,5],topRules:{Document:[0,15]},dialects:{noMatch:0,selfClosing:509},tokenPrec:511});function qu(n,e){let t=Object.create(null);for(let i of n.getChildren(Xu)){let s=i.getChild(B1),r=i.getChild(vo)||i.getChild(Mu);s&&(t[e.read(s.from,s.to)]=r?r.type.id==vo?e.read(r.from+1,r.to-1):e.read(r.from,r.to):"")}return t}function vh(n,e){let t=n.getChild(j1);return t?e.read(t.from,t.to):" "}function $r(n,e,t){let i;for(let s of t)if(!s.attrs||s.attrs(i||(i=qu(n.node.parent.firstChild,e))))return{parser:s.parser};return null}function Eu(n=[],e=[]){let t=[],i=[],s=[],r=[];for(let l of n)(l.tag=="script"?t:l.tag=="style"?i:l.tag=="textarea"?s:r).push(l);let o=e.length?Object.create(null):null;for(let l of e)(o[l.name]||(o[l.name]=[])).push(l);return rg((l,a)=>{let h=l.type.id;if(h==N1)return $r(l,a,t);if(h==I1)return $r(l,a,i);if(h==G1)return $r(l,a,s);if(h==Au&&r.length){let c=l.node,f=c.firstChild,u=f&&vh(f,a),d;if(u){for(let O of r)if(O.tag==u&&(!O.attrs||O.attrs(d||(d=qu(f,a))))){let m=c.lastChild,g=m.type.id==F1?m.from:c.to;if(g>f.to)return{parser:O.parser,overlay:[{from:f.to,to:g}]}}}}if(o&&h==Xu){let c=l.node,f;if(f=c.firstChild){let u=o[a.read(f.from,f.to)];if(u)for(let d of u){if(d.tagName&&d.tagName!=vh(c.parent,a))continue;let O=c.lastChild;if(O.type.id==vo){let m=O.from+1,g=O.lastChild,b=O.to-(g&&g.isError?0:1);if(b>m)return{parser:d.parser,overlay:[{from:m,to:b}]}}else if(O.type.id==Mu)return{parser:d.parser,overlay:[{from:O.from,to:O.to}]}}}}return null})}const Ti=["_blank","_self","_top","_parent"],Pr=["ascii","utf-8","utf-16","latin1","latin1"],kr=["get","post","put","delete"],vr=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],Ce=["true","false"],C={},my={a:{attrs:{href:null,ping:null,type:null,media:null,target:Ti,hreflang:null}},abbr:C,address:C,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:C,aside:C,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:C,base:{attrs:{href:null,target:Ti}},bdi:C,bdo:C,blockquote:{attrs:{cite:null}},body:C,br:C,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:vr,formmethod:kr,formnovalidate:["novalidate"],formtarget:Ti,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:C,center:C,cite:C,code:C,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:C,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:C,div:C,dl:C,dt:C,em:C,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:C,figure:C,footer:C,form:{attrs:{action:null,name:null,"accept-charset":Pr,autocomplete:["on","off"],enctype:vr,method:kr,novalidate:["novalidate"],target:Ti}},h1:C,h2:C,h3:C,h4:C,h5:C,h6:C,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:C,hgroup:C,hr:C,html:{attrs:{manifest:null}},i:C,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:vr,formmethod:kr,formnovalidate:["novalidate"],formtarget:Ti,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:C,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:C,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:C,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:Pr,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:C,noscript:C,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:C,param:{attrs:{name:null,value:null}},pre:C,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:C,rt:C,ruby:C,samp:C,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:Pr}},section:C,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:C,source:{attrs:{src:null,type:null,media:null}},span:C,strong:C,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:C,summary:C,sup:C,table:C,tbody:C,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:C,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:C,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:C,time:{attrs:{datetime:null}},title:C,tr:C,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:C,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:C},Vu={accesskey:null,class:null,contenteditable:Ce,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:Ce,autocorrect:Ce,autocapitalize:Ce,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":Ce,"aria-autocomplete":["inline","list","both","none"],"aria-busy":Ce,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":Ce,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":Ce,"aria-hidden":Ce,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":Ce,"aria-multiselectable":Ce,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":Ce,"aria-relevant":null,"aria-required":Ce,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},_u="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(n=>"on"+n);for(let n of _u)Vu[n]=null;class vs{constructor(e,t){this.tags=Object.assign(Object.assign({},my),e),this.globalAttrs=Object.assign(Object.assign({},Vu),t),this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}}vs.default=new vs;function pi(n,e,t=n.length){if(!e)return"";let i=e.firstChild,s=i&&i.getChild("TagName");return s?n.sliceString(s.from,Math.min(s.to,t)):""}function mi(n,e=!1){for(;n;n=n.parent)if(n.name=="Element")if(e)e=!1;else return n;return null}function Du(n,e,t){let i=t.tags[pi(n,mi(e))];return(i==null?void 0:i.children)||t.allTags}function ul(n,e){let t=[];for(let i=mi(e);i&&!i.type.isTop;i=mi(i.parent)){let s=pi(n,i);if(s&&i.lastChild.name=="CloseTag")break;s&&t.indexOf(s)<0&&(e.name=="EndTag"||e.from>=i.firstChild.to)&&t.push(s)}return t}const zu=/^[:\-\.\w\u00b7-\uffff]*$/;function Zh(n,e,t,i,s){let r=/\s*>/.test(n.sliceDoc(s,s+5))?"":">",o=mi(t,!0);return{from:i,to:s,options:Du(n.doc,o,e).map(l=>({label:l,type:"type"})).concat(ul(n.doc,t).map((l,a)=>({label:"/"+l,apply:"/"+l+r,type:"type",boost:99-a}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function Th(n,e,t,i){let s=/\s*>/.test(n.sliceDoc(i,i+5))?"":">";return{from:t,to:i,options:ul(n.doc,e).map((r,o)=>({label:r,apply:r+s,type:"type",boost:99-o})),validFor:zu}}function gy(n,e,t,i){let s=[],r=0;for(let o of Du(n.doc,t,e))s.push({label:"<"+o,type:"type"});for(let o of ul(n.doc,t))s.push({label:"</"+o+">",type:"type",boost:99-r++});return{from:i,to:i,options:s,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function by(n,e,t,i,s){let r=mi(t),o=r?e.tags[pi(n.doc,r)]:null,l=o&&o.attrs?Object.keys(o.attrs):[],a=o&&o.globalAttrs===!1?l:l.length?l.concat(e.globalAttrNames):e.globalAttrNames;return{from:i,to:s,options:a.map(h=>({label:h,type:"property"})),validFor:zu}}function yy(n,e,t,i,s){var r;let o=(r=t.parent)===null||r===void 0?void 0:r.getChild("AttributeName"),l=[],a;if(o){let h=n.sliceDoc(o.from,o.to),c=e.globalAttrs[h];if(!c){let f=mi(t),u=f?e.tags[pi(n.doc,f)]:null;c=(u==null?void 0:u.attrs)&&u.attrs[h]}if(c){let f=n.sliceDoc(i,s).toLowerCase(),u='"',d='"';/^['"]/.test(f)?(a=f[0]=='"'?/^[^"]*$/:/^[^']*$/,u="",d=n.sliceDoc(s,s+1)==f[0]?"":f[0],f=f.slice(1),i++):a=/^[^\s<>='"]*$/;for(let O of c)l.push({label:O,apply:u+O+d,type:"constant"})}}return{from:i,to:s,options:l,validFor:a}}function Sy(n,e){let{state:t,pos:i}=e,s=J(t).resolveInner(i,-1),r=s.resolve(i);for(let o=i,l;r==s&&(l=s.childBefore(o));){let a=l.lastChild;if(!a||!a.type.isError||a.from<a.to)break;r=s=l,o=a.from}return s.name=="TagName"?s.parent&&/CloseTag$/.test(s.parent.name)?Th(t,s,s.from,i):Zh(t,n,s,s.from,i):s.name=="StartTag"?Zh(t,n,s,i,i):s.name=="StartCloseTag"||s.name=="IncompleteCloseTag"?Th(t,s,i,i):s.name=="OpenTag"||s.name=="SelfClosingTag"||s.name=="AttributeName"?by(t,n,s,s.name=="AttributeName"?s.from:i,i):s.name=="Is"||s.name=="AttributeValue"||s.name=="UnquotedAttributeValue"?yy(t,n,s,s.name=="Is"?i:s.from,i):e.explicit&&(r.name=="Element"||r.name=="Text"||r.name=="Document")?gy(t,n,s,i):null}function xy(n){let{extraTags:e,extraGlobalAttributes:t}=n,i=t||e?new vs(e,t):vs.default;return s=>Sy(i,s)}const Qy=ot.parser.configure({top:"SingleExpression"}),Uu=[{tag:"script",attrs:n=>n.type=="text/typescript"||n.lang=="ts",parser:yu.parser},{tag:"script",attrs:n=>n.type=="text/babel"||n.type=="text/jsx",parser:Su.parser},{tag:"script",attrs:n=>n.type=="text/typescript-jsx",parser:xu.parser},{tag:"script",attrs(n){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(n.type)},parser:Qy},{tag:"script",attrs(n){return!n.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(n.type)},parser:ot.parser},{tag:"style",attrs(n){return(!n.lang||n.lang=="css")&&(!n.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(n.type))},parser:$s.parser}],ju=[{name:"style",parser:$s.parser.configure({top:"Styles"})}].concat(_u.map(n=>({name:n,parser:ot.parser}))),Bu=ui.define({name:"html",parser:py.configure({props:[zs.add({Element(n){let e=/^(\s*)(<\/)?/.exec(n.textAfter);return n.node.to<=n.pos+e[0].length?n.continue():n.lineIndent(n.node.from)+(e[2]?0:n.unit)},"OpenTag CloseTag SelfClosingTag"(n){return n.column(n.node.from)+n.unit},Document(n){if(n.pos+/\s*/.exec(n.textAfter)[0].length<n.node.to)return n.continue();let e=null,t;for(let i=n.node;;){let s=i.lastChild;if(!s||s.name!="Element"||s.to!=i.to)break;e=i=s}return e&&!((t=e.lastChild)&&(t.name=="CloseTag"||t.name=="SelfClosingTag"))?n.lineIndent(e.from)+n.unit:null}}),Us.add({Element(n){let e=n.firstChild,t=n.lastChild;return!e||e.name!="OpenTag"?null:{from:e.to,to:t.name=="CloseTag"?t.from:n.to}}}),Kf.add({"OpenTag CloseTag":n=>n.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:"<!--",close:"-->"}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-._"}}),ns=Bu.configure({wrap:Eu(Uu,ju)});function Vx(n={}){let e="",t;n.matchClosingTags===!1&&(e="noMatch"),n.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(n.nestedLanguages&&n.nestedLanguages.length||n.nestedAttributes&&n.nestedAttributes.length)&&(t=Eu((n.nestedLanguages||[]).concat(Uu),(n.nestedAttributes||[]).concat(ju)));let i=t?Bu.configure({wrap:t,dialect:e}):e?ns.configure({dialect:e}):ns;return new el(i,[ns.data.of({autocomplete:xy(n)}),n.autoCloseTags!==!1?wy:[],t1().support,A1().support])}const Ch=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),wy=v.inputHandler.of((n,e,t,i,s)=>{if(n.composing||n.state.readOnly||e!=t||i!=">"&&i!="/"||!ns.isActiveAt(n.state,e,-1))return!1;let r=s(),{state:o}=r,l=o.changeByRange(a=>{var h,c,f;let u=o.doc.sliceString(a.from-1,a.to)==i,{head:d}=a,O=J(o).resolveInner(d,-1),m;if(u&&i==">"&&O.name=="EndTag"){let g=O.parent;if(((c=(h=g.parent)===null||h===void 0?void 0:h.lastChild)===null||c===void 0?void 0:c.name)!="CloseTag"&&(m=pi(o.doc,g.parent,d))&&!Ch.has(m)){let b=d+(o.doc.sliceString(d,d+1)===">"?1:0),S=`</${m}>`;return{range:a,changes:{from:d,to:b,insert:S}}}}else if(u&&i=="/"&&O.name=="IncompleteCloseTag"){let g=O.parent;if(O.from==d-2&&((f=g.lastChild)===null||f===void 0?void 0:f.name)!="CloseTag"&&(m=pi(o.doc,g,d))&&!Ch.has(m)){let b=d+(o.doc.sliceString(d,d+1)===">"?1:0),S=`${m}>`;return{range:y.cursor(d+S.length,-1),changes:{from:d,to:b,insert:S}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([r,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),$y=n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),i=Ol(n.state,t.from);return i.line?Py(n):i.block?vy(n):!1};function dl(n,e){return({state:t,dispatch:i})=>{if(t.readOnly)return!1;let s=n(e,t);return s?(i(t.update(s)),!0):!1}}const Py=dl(Cy,0),ky=dl(Nu,0),vy=dl((n,e)=>Nu(n,e,Ty(e)),0);function Ol(n,e){let t=n.languageDataAt("commentTokens",e);return t.length?t[0]:{}}const Ci=50;function Zy(n,{open:e,close:t},i,s){let r=n.sliceDoc(i-Ci,i),o=n.sliceDoc(s,s+Ci),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-e.length,h)==e&&o.slice(a,a+t.length)==t)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let c,f;s-i<=2*Ci?c=f=n.sliceDoc(i,s):(c=n.sliceDoc(i,i+Ci),f=n.sliceDoc(s-Ci,s));let u=/^\s*/.exec(c)[0].length,d=/\s*$/.exec(f)[0].length,O=f.length-d-t.length;return c.slice(u,u+e.length)==e&&f.slice(O,O+t.length)==t?{open:{pos:i+u+e.length,margin:/\s/.test(c.charAt(u+e.length))?1:0},close:{pos:s-d-t.length,margin:/\s/.test(f.charAt(O-1))?1:0}}:null}function Ty(n){let e=[];for(let t of n.selection.ranges){let i=n.doc.lineAt(t.from),s=t.to<=i.to?i:n.doc.lineAt(t.to),r=e.length-1;r>=0&&e[r].to>i.from?e[r].to=s.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return e}function Nu(n,e,t=e.selection.ranges){let i=t.map(r=>Ol(e,r.from).block);if(!i.every(r=>r))return null;let s=t.map((r,o)=>Zy(e,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:e.changes(t.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;o<s.length;o++)if(l=s[o]){let a=i[o],{open:h,close:c}=l;r.push({from:h.pos-a.open.length,to:h.pos+h.margin},{from:c.pos-c.margin,to:c.pos+a.close.length})}return{changes:r}}return null}function Cy(n,e,t=e.selection.ranges){let i=[],s=-1;for(let{from:r,to:o}of t){let l=i.length,a=1e9,h=Ol(e,r).line;if(h){for(let c=r;c<=o;){let f=e.doc.lineAt(c);if(f.from>s&&(r==o||o>f.from)){s=f.from;let u=/^\s*/.exec(f.text)[0].length,d=u==f.length,O=f.text.slice(u,u+h.length)==h?u:-1;u<f.text.length&&u<a&&(a=u),i.push({line:f,comment:O,token:h,indent:u,empty:d,single:!1})}c=f.to+1}if(a<1e9)for(let c=l;c<i.length;c++)i[c].indent<i[c].line.text.length&&(i[c].indent=a);i.length==l+1&&(i[l].single=!0)}}if(n!=2&&i.some(r=>r.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:c,single:f}of i)(f||!c)&&r.push({from:l.from+h,insert:a+" "});let o=e.changes(r);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,c=h+a.length;o.text[c-o.from]==" "&&c++,r.push({from:h,to:c})}return{changes:r}}return null}const To=pt.define(),Ry=pt.define(),Ay=T.define(),Iu=T.define({combine(n){return lt(n,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(i,s)=>e(i,s)||t(i,s)})}}),Gu=oe.define({create(){return st.empty},update(n,e){let t=e.state.facet(Iu),i=e.annotation(To);if(i){let a=ve.fromTransaction(e,i.selection),h=i.side,c=h==0?n.undone:n.done;return a?c=Zs(c,c.length,t.minDepth,a):c=Ku(c,e.startState.selection),new st(h==0?i.rest:c,h==0?c:i.rest)}let s=e.annotation(Ry);if((s=="full"||s=="before")&&(n=n.isolate()),e.annotation(ie.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let r=ve.fromTransaction(e),o=e.annotation(ie.time),l=e.annotation(ie.userEvent);return r?n=n.addChanges(r,o,l,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,l,t.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new st(n.done.map(ve.fromJSON),n.undone.map(ve.fromJSON))}});function Lu(n={}){return[Gu,Iu.of(n),v.domEventHandlers({beforeinput(e,t){let i=e.inputType=="historyUndo"?Fu:e.inputType=="historyRedo"?Co:null;return i?(e.preventDefault(),i(t)):!1}})]}function Ns(n,e){return function({state:t,dispatch:i}){if(!e&&t.readOnly)return!1;let s=t.field(Gu,!1);if(!s)return!1;let r=s.pop(n,t,e);return r?(i(r),!0):!1}}const Fu=Ns(0,!1),Co=Ns(1,!1),Xy=Ns(0,!0),My=Ns(1,!0);class ve{constructor(e,t,i,s,r){this.changes=e,this.effects=t,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(e){return new ve(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new ve(e.changes&&re.fromJSON(e.changes),[],e.mapped&&rt.fromJSON(e.mapped),e.startSelection&&y.fromJSON(e.startSelection),e.selectionsAfter.map(y.fromJSON))}static fromTransaction(e,t){let i=Ve;for(let s of e.startState.facet(Ay)){let r=s(e);r.length&&(i=i.concat(r))}return!i.length&&e.changes.empty?null:new ve(e.changes.invert(e.startState.doc),i,void 0,t||e.startState.selection,Ve)}static selection(e){return new ve(void 0,Ve,void 0,void 0,e)}}function Zs(n,e,t,i){let s=e+1>t+20?e-t-1:0,r=n.slice(s,e);return r.push(i),r}function Wy(n,e){let t=[],i=!1;return n.iterChangedRanges((s,r)=>t.push(s,r)),e.iterChangedRanges((s,r,o,l)=>{for(let a=0;a<t.length;){let h=t[a++],c=t[a++];l>=h&&o<=c&&(i=!0)}}),i}function Yy(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,i)=>t.empty!=e.ranges[i].empty).length===0}function Hu(n,e){return n.length?e.length?n.concat(e):n:e}const Ve=[],qy=200;function Ku(n,e){if(n.length){let t=n[n.length-1],i=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-qy));return i.length&&i[i.length-1].eq(e)?n:(i.push(e),Zs(n,n.length-1,1e9,t.setSelAfter(i)))}else return[ve.selection([e])]}function Ey(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function Zr(n,e){if(!n.length)return n;let t=n.length,i=Ve;for(;t;){let s=Vy(n[t-1],e,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,t);return r[t-1]=s,r}else e=s.mapped,t--,i=s.selectionsAfter}return i.length?[ve.selection(i)]:Ve}function Vy(n,e,t){let i=Hu(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(e)):Ve,t);if(!n.changes)return ve.selection(i);let s=n.changes.map(e),r=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new ve(s,A.mapEffects(n.effects,e),o,n.startSelection.map(r),i)}const _y=/^(input\.type|delete)($|\.)/;class st{constructor(e,t,i=0,s=void 0){this.done=e,this.undone=t,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new st(this.done,this.undone):this}addChanges(e,t,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!i||_y.test(i))&&(!l.selectionsAfter.length&&t-this.prevTime<s.newGroupDelay&&s.joinToEvent(r,Wy(l.changes,e.changes))||i=="input.type.compose")?o=Zs(o,o.length-1,s.minDepth,new ve(e.changes.compose(l.changes),Hu(e.effects,l.effects),l.mapped,l.startSelection,Ve)):o=Zs(o,o.length,s.minDepth,e),new st(o,Ve,t,i)}addSelection(e,t,i,s){let r=this.done.length?this.done[this.done.length-1].selectionsAfter:Ve;return r.length>0&&t-this.prevTime<s&&i==this.prevUserEvent&&i&&/^select($|\.)/.test(i)&&Yy(r[r.length-1],e)?this:new st(Ku(this.done,e),this.undone,t,i)}addMapping(e){return new st(Zr(this.done,e),Zr(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,i){let s=e==0?this.done:this.undone;if(s.length==0)return null;let r=s[s.length-1],o=r.selectionsAfter[0]||t.selection;if(i&&r.selectionsAfter.length)return t.update({selection:r.selectionsAfter[r.selectionsAfter.length-1],annotations:To.of({side:e,rest:Ey(s),selection:o}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(r.changes){let l=s.length==1?Ve:s.slice(0,s.length-1);return r.mapped&&(l=Zr(l,r.mapped)),t.update({changes:r.changes,selection:r.startSelection,effects:r.effects,annotations:To.of({side:e,rest:l,selection:o}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}}st.empty=new st(Ve,Ve);const Ju=[{key:"Mod-z",run:Fu,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Co,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Co,preventDefault:!0},{key:"Mod-u",run:Xy,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:My,preventDefault:!0}];function xi(n,e){return y.create(n.ranges.map(e),n.mainIndex)}function at(n,e){return n.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function Ie({state:n,dispatch:e},t){let i=xi(n.selection,t);return i.eq(n.selection,!0)?!1:(e(at(n,i)),!0)}function Is(n,e){return y.cursor(e?n.to:n.from)}function ed(n,e){return Ie(n,t=>t.empty?n.moveByChar(t,e):Is(t,e))}function me(n){return n.textDirectionAt(n.state.selection.main.head)==L.LTR}const td=n=>ed(n,!me(n)),id=n=>ed(n,me(n));function nd(n,e){return Ie(n,t=>t.empty?n.moveByGroup(t,e):Is(t,e))}const Dy=n=>nd(n,!me(n)),zy=n=>nd(n,me(n));function Uy(n,e,t){if(e.type.prop(t))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}function Gs(n,e,t){let i=J(n).resolveInner(e.head),s=t?M.closedBy:M.openedBy;for(let a=e.head;;){let h=t?i.childAfter(a):i.childBefore(a);if(!h)break;Uy(n,h,s)?i=h:a=t?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=t?nt(n,i.from,1):nt(n,i.to,-1))&&o.matched?l=t?o.end.to:o.end.from:l=t?i.to:i.from,y.cursor(l,t?-1:1)}const jy=n=>Ie(n,e=>Gs(n.state,e,!me(n))),By=n=>Ie(n,e=>Gs(n.state,e,me(n)));function sd(n,e){return Ie(n,t=>{if(!t.empty)return Is(t,e);let i=n.moveVertically(t,e);return i.head!=t.head?i:n.moveToLineBoundary(t,e)})}const rd=n=>sd(n,!1),od=n=>sd(n,!0);function ld(n){let e=n.scrollDOM.clientHeight<n.scrollDOM.scrollHeight-2,t=0,i=0,s;if(e){for(let r of n.state.facet(v.scrollMargins)){let o=r(n);o!=null&&o.top&&(t=Math.max(o==null?void 0:o.top,t)),o!=null&&o.bottom&&(i=Math.max(o==null?void 0:o.bottom,i))}s=n.scrollDOM.clientHeight-t-i}else s=(n.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:t,marginBottom:i,selfScroll:e,height:Math.max(n.defaultLineHeight,s-5)}}function ad(n,e){let t=ld(n),{state:i}=n,s=xi(i.selection,o=>o.empty?n.moveVertically(o,e,t.height):Is(o,e));if(s.eq(i.selection))return!1;let r;if(t.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+t.marginTop,h=l.bottom-t.marginBottom;o&&o.top>a&&o.bottom<h&&(r=v.scrollIntoView(s.main.head,{y:"start",yMargin:o.top-a}))}return n.dispatch(at(i,s),{effects:r}),!0}const Rh=n=>ad(n,!1),Ro=n=>ad(n,!0);function Mt(n,e,t){let i=n.lineBlockAt(e.head),s=n.moveToLineBoundary(e,t);if(s.head==e.head&&s.head!=(t?i.to:i.from)&&(s=n.moveToLineBoundary(e,t,!1)),!t&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&e.head!=i.from+r&&(s=y.cursor(i.from+r))}return s}const Ny=n=>Ie(n,e=>Mt(n,e,!0)),Iy=n=>Ie(n,e=>Mt(n,e,!1)),Gy=n=>Ie(n,e=>Mt(n,e,!me(n))),Ly=n=>Ie(n,e=>Mt(n,e,me(n))),Fy=n=>Ie(n,e=>y.cursor(n.lineBlockAt(e.head).from,1)),Hy=n=>Ie(n,e=>y.cursor(n.lineBlockAt(e.head).to,-1));function Ky(n,e,t){let i=!1,s=xi(n.selection,r=>{let o=nt(n,r.head,-1)||nt(n,r.head,1)||r.head>0&&nt(n,r.head-1,1)||r.head<n.doc.length&&nt(n,r.head+1,-1);if(!o||!o.end)return r;i=!0;let l=o.start.from==r.head?o.end.to:o.end.from;return y.cursor(l)});return i?(e(at(n,s)),!0):!1}const Jy=({state:n,dispatch:e})=>Ky(n,e);function ze(n,e){let t=xi(n.state.selection,i=>{let s=e(i);return y.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return t.eq(n.state.selection)?!1:(n.dispatch(at(n.state,t)),!0)}function hd(n,e){return ze(n,t=>n.moveByChar(t,e))}const cd=n=>hd(n,!me(n)),fd=n=>hd(n,me(n));function ud(n,e){return ze(n,t=>n.moveByGroup(t,e))}const eS=n=>ud(n,!me(n)),tS=n=>ud(n,me(n)),iS=n=>ze(n,e=>Gs(n.state,e,!me(n))),nS=n=>ze(n,e=>Gs(n.state,e,me(n)));function dd(n,e){return ze(n,t=>n.moveVertically(t,e))}const Od=n=>dd(n,!1),pd=n=>dd(n,!0);function md(n,e){return ze(n,t=>n.moveVertically(t,e,ld(n).height))}const Ah=n=>md(n,!1),Xh=n=>md(n,!0),sS=n=>ze(n,e=>Mt(n,e,!0)),rS=n=>ze(n,e=>Mt(n,e,!1)),oS=n=>ze(n,e=>Mt(n,e,!me(n))),lS=n=>ze(n,e=>Mt(n,e,me(n))),aS=n=>ze(n,e=>y.cursor(n.lineBlockAt(e.head).from)),hS=n=>ze(n,e=>y.cursor(n.lineBlockAt(e.head).to)),Mh=({state:n,dispatch:e})=>(e(at(n,{anchor:0})),!0),Wh=({state:n,dispatch:e})=>(e(at(n,{anchor:n.doc.length})),!0),Yh=({state:n,dispatch:e})=>(e(at(n,{anchor:n.selection.main.anchor,head:0})),!0),qh=({state:n,dispatch:e})=>(e(at(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cS=({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),fS=({state:n,dispatch:e})=>{let t=Ls(n).map(({from:i,to:s})=>y.range(i,Math.min(s+1,n.doc.length)));return e(n.update({selection:y.create(t),userEvent:"select"})),!0},uS=({state:n,dispatch:e})=>{let t=xi(n.selection,i=>{var s;let r=J(n).resolveStack(i.from,1);for(let o=r;o;o=o.next){let{node:l}=o;if((l.from<i.from&&l.to>=i.to||l.to>i.to&&l.from<=i.from)&&(!((s=l.parent)===null||s===void 0)&&s.parent))return y.range(l.to,l.from)}return i});return e(at(n,t)),!0},dS=({state:n,dispatch:e})=>{let t=n.selection,i=null;return t.ranges.length>1?i=y.create([t.main]):t.main.empty||(i=y.create([y.cursor(t.main.head)])),i?(e(at(n,i)),!0):!1};function gn(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=e(r);a<o?(t="delete.backward",a=En(n,a,!1)):a>o&&(t="delete.forward",a=En(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=En(n,o,!1),l=En(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:y.cursor(o,o<r.head?-1:1)}});return s.changes.empty?!1:(n.dispatch(i.update(s,{scrollIntoView:!0,userEvent:t,effects:t=="delete.selection"?v.announce.of(i.phrase("Selection deleted")):void 0})),!0)}function En(n,e,t){if(n instanceof v)for(let i of n.state.facet(v.atomicRanges).map(s=>s(n)))i.between(e,e,(s,r)=>{s<e&&r>e&&(e=t?r:s)});return e}const gd=(n,e,t)=>gn(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(t&&!e&&s>o.from&&s<o.from+200&&!/[^ \t]/.test(l=o.text.slice(0,s-o.from))){if(l[l.length-1]=="	")return s-1;let h=yi(l,r.tabSize),c=h%ms(r)||ms(r);for(let f=0;f<c&&l[l.length-1-f]==" ";f++)s--;a=s}else a=ue(o.text,s-o.from,e,e)+o.from,a==s&&o.number!=(e?r.doc.lines:1)?a+=e?1:-1:!e&&/[\ufe00-\ufe0f]/.test(o.text.slice(a-o.from,s-o.from))&&(a=ue(o.text,a-o.from,!1,!1)+o.from);return a}),Ao=n=>gd(n,!1,!0),bd=n=>gd(n,!0,!1),yd=(n,e)=>gn(n,t=>{let i=t.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(e?r.to:r.from)){i==t.head&&r.number!=(e?s.doc.lines:1)&&(i+=e?1:-1);break}let a=ue(r.text,i-r.from,e)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),c=o(h);if(l!=null&&c!=l)break;(h!=" "||i!=t.head)&&(l=c),i=a}return i}),Sd=n=>yd(n,!1),OS=n=>yd(n,!0),pS=n=>gn(n,e=>{let t=n.lineBlockAt(e.head).to;return e.head<t?t:Math.min(n.state.doc.length,e.head+1)}),mS=n=>gn(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),gS=n=>gn(n,e=>{let t=n.moveToLineBoundary(e,!0).head;return e.head<t?t:Math.min(n.state.doc.length,e.head+1)}),bS=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:_.of(["",""])},range:y.cursor(i.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},yS=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:ue(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:ue(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:y.cursor(l)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Ls(n){let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),t>=s.number){let o=e[e.length-1];o.to=r.to,o.ranges.push(i)}else e.push({from:s.from,to:r.to,ranges:[i]});t=r.number+1}return e}function xd(n,e,t){if(n.readOnly)return!1;let i=[],s=[];for(let r of Ls(n)){if(t?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(t?r.to+1:r.from-1),l=o.length+1;if(t){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(y.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(y.range(a.anchor-l,a.head-l))}}return i.length?(e(n.update({changes:i,scrollIntoView:!0,selection:y.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}const SS=({state:n,dispatch:e})=>xd(n,e,!1),xS=({state:n,dispatch:e})=>xd(n,e,!0);function Qd(n,e,t){if(n.readOnly)return!1;let i=[];for(let s of Ls(n))t?i.push({from:s.from,insert:n.doc.slice(s.from,s.to)+n.lineBreak}):i.push({from:s.to,insert:n.lineBreak+n.doc.slice(s.from,s.to)});return e(n.update({changes:i,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const QS=({state:n,dispatch:e})=>Qd(n,e,!1),wS=({state:n,dispatch:e})=>Qd(n,e,!0),$S=n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(Ls(e).map(({from:s,to:r})=>(s>0?s--:r<e.doc.length&&r++,{from:s,to:r}))),i=xi(e.selection,s=>{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(t);return n.dispatch({changes:t,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function PS(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=J(n).resolveInner(e),i=t.childBefore(e),s=t.childAfter(e),r;return i&&s&&i.to<=e&&s.from>=e&&(r=i.type.prop(M.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}const kS=wd(!1),vS=wd(!0);function wd(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let i=e.changeByRange(s=>{let{from:r,to:o}=s,l=e.doc.lineAt(r),a=!n&&r==o&&PS(e,r);n&&(r=o=(o<=l.to?l:e.doc.lineAt(o)).to);let h=new Ds(e,{simulateBreak:r,simulateDoubleBreak:!!a}),c=tl(h,r);for(c==null&&(c=yi(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));o<l.to&&/\s/.test(l.text[o-l.from]);)o++;a?{from:r,to:o}=a:r>l.from&&r<l.from+100&&!/\S/.test(l.text.slice(0,r))&&(r=l.from);let f=["",tn(e,c)];return a&&f.push(tn(e,h.lineIndent(l.from,-1))),{changes:{from:r,to:o,insert:_.of(f)},range:y.cursor(r+1+f[1].length)}});return t(e.update(i,{scrollIntoView:!0,userEvent:"input"})),!0}}function pl(n,e){let t=-1;return n.changeByRange(i=>{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>t&&(i.empty||i.to>l.from)&&(e(l,s,i),t=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:y.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}const ZS=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),i=new Ds(n,{overrideIndentation:r=>{let o=t[r];return o??-1}}),s=pl(n,(r,o,l)=>{let a=tl(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],c=tn(n,a);(h!=c||l.from<r.from+h.length)&&(t[r.from]=a,o.push({from:r.from,to:r.from+h.length,insert:c}))});return s.changes.empty||e(n.update(s,{userEvent:"indent"})),!0},$d=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(pl(n,(t,i)=>{i.push({from:t.from,insert:n.facet(_s)})}),{userEvent:"input.indent"})),!0),Pd=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(pl(n,(t,i)=>{let s=/^\s*/.exec(t.text)[0];if(!s)return;let r=yi(s,n.tabSize),o=0,l=tn(n,Math.max(0,r-ms(n)));for(;o<s.length&&o<l.length&&s.charCodeAt(o)==l.charCodeAt(o);)o++;i.push({from:t.from+o,to:t.from+s.length,insert:l.slice(o)})}),{userEvent:"delete.dedent"})),!0),TS=n=>(n.setTabFocusMode(),!0),CS=[{key:"Ctrl-b",run:td,shift:cd,preventDefault:!0},{key:"Ctrl-f",run:id,shift:fd},{key:"Ctrl-p",run:rd,shift:Od},{key:"Ctrl-n",run:od,shift:pd},{key:"Ctrl-a",run:Fy,shift:aS},{key:"Ctrl-e",run:Hy,shift:hS},{key:"Ctrl-d",run:bd},{key:"Ctrl-h",run:Ao},{key:"Ctrl-k",run:pS},{key:"Ctrl-Alt-h",run:Sd},{key:"Ctrl-o",run:bS},{key:"Ctrl-t",run:yS},{key:"Ctrl-v",run:Ro}],RS=[{key:"ArrowLeft",run:td,shift:cd,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:Dy,shift:eS,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Gy,shift:oS,preventDefault:!0},{key:"ArrowRight",run:id,shift:fd,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:zy,shift:tS,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Ly,shift:lS,preventDefault:!0},{key:"ArrowUp",run:rd,shift:Od,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Mh,shift:Yh},{mac:"Ctrl-ArrowUp",run:Rh,shift:Ah},{key:"ArrowDown",run:od,shift:pd,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Wh,shift:qh},{mac:"Ctrl-ArrowDown",run:Ro,shift:Xh},{key:"PageUp",run:Rh,shift:Ah},{key:"PageDown",run:Ro,shift:Xh},{key:"Home",run:Iy,shift:rS,preventDefault:!0},{key:"Mod-Home",run:Mh,shift:Yh},{key:"End",run:Ny,shift:sS,preventDefault:!0},{key:"Mod-End",run:Wh,shift:qh},{key:"Enter",run:kS},{key:"Mod-a",run:cS},{key:"Backspace",run:Ao,shift:Ao},{key:"Delete",run:bd},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Sd},{key:"Mod-Delete",mac:"Alt-Delete",run:OS},{mac:"Mod-Backspace",run:mS},{mac:"Mod-Delete",run:gS}].concat(CS.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),kd=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:jy,shift:iS},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:By,shift:nS},{key:"Alt-ArrowUp",run:SS},{key:"Shift-Alt-ArrowUp",run:QS},{key:"Alt-ArrowDown",run:xS},{key:"Shift-Alt-ArrowDown",run:wS},{key:"Escape",run:dS},{key:"Mod-Enter",run:vS},{key:"Alt-l",mac:"Ctrl-l",run:fS},{key:"Mod-i",run:uS,preventDefault:!0},{key:"Mod-[",run:Pd},{key:"Mod-]",run:$d},{key:"Mod-Alt-\\",run:ZS},{key:"Shift-Mod-k",run:$S},{key:"Shift-Mod-\\",run:Jy},{key:"Mod-/",run:$y},{key:"Alt-A",run:ky},{key:"Ctrl-m",mac:"Shift-Alt-m",run:TS}].concat(RS),_x={key:"Tab",run:$d,shift:Pd};function N(){var n=arguments[0];typeof n=="string"&&(n=document.createElement(n));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=t[i];typeof s=="string"?n.setAttribute(i,s):s!=null&&(n[i]=s)}e++}for(;e<arguments.length;e++)vd(n,arguments[e]);return n}function vd(n,e){if(typeof e=="string")n.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)n.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)vd(n,e[t]);else throw new RangeError("Unsupported child node: "+e)}const Eh=typeof String.prototype.normalize=="function"?n=>n.normalize("NFKD"):n=>n;class gi{constructor(e,t,i=0,s=e.length,r,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(i,s),this.bufferStart=i,this.normalize=r?l=>r(Eh(l)):Eh,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return ae(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=Yo(e),i=this.bufferStart+this.bufferPos;this.bufferPos+=qe(e);let s=this.normalize(t);for(let r=0,o=i;;r++){let l=s.charCodeAt(r),a=this.match(l,o,this.bufferPos+this.bufferStart);if(r==s.length-1){if(a)return this.value=a,this;break}o==i&&r<t.length&&t.charCodeAt(r)==l&&o++}}}match(e,t,i){let s=null;for(let r=0;r<this.matches.length;r+=2){let o=this.matches[r],l=!1;this.query.charCodeAt(o)==e&&(o==this.query.length-1?s={from:this.matches[r+1],to:i}:(this.matches[r]++,l=!0)),l||(this.matches.splice(r,2),r-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?s={from:t,to:i}:this.matches.push(1,t)),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}}typeof Symbol<"u"&&(gi.prototype[Symbol.iterator]=function(){return this});const Zd={from:-1,to:-1,match:/.*/.exec("")},ml="gm"+(/x/.unicode==null?"":"u");class Td{constructor(e,t,i,s=0,r=e.length){if(this.text=e,this.to=r,this.curLine="",this.done=!1,this.value=Zd,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new Cd(e,t,i,s,r);this.re=new RegExp(t,ml+(i!=null&&i.ignoreCase?"i":"")),this.test=i==null?void 0:i.test,this.iter=e.iter();let o=e.lineAt(s);this.curLineStart=o.from,this.matchPos=Ts(e,s),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let i=this.curLineStart+t.index,s=i+t[0].length;if(this.matchPos=Ts(this.text,s+(i==s?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(i<s||i>this.value.to)&&(!this.test||this.test(i,s,t)))return this.value={from:i,to:s,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}}const Tr=new WeakMap;class ai{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,i){let s=Tr.get(e);if(!s||s.from>=i||s.to<=t){let l=new ai(t,e.sliceString(t,i));return Tr.set(e,l),l}if(s.from==t&&s.to==i)return s;let{text:r,from:o}=s;return o>t&&(r=e.sliceString(t,o)+r,o=t),s.to<i&&(r+=e.sliceString(s.to,i)),Tr.set(e,new ai(o,r)),new ai(t,r.slice(t-o,i-o))}}class Cd{constructor(e,t,i,s,r){this.text=e,this.to=r,this.done=!1,this.value=Zd,this.matchPos=Ts(e,s),this.re=new RegExp(t,ml+(i!=null&&i.ignoreCase?"i":"")),this.test=i==null?void 0:i.test,this.flat=ai.get(e,s,this.chunkEnd(s+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let i=this.flat.from+t.index,s=i+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(i,s,t)))return this.value={from:i,to:s,match:t},this.matchPos=Ts(this.text,s+(i==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=ai.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(Td.prototype[Symbol.iterator]=Cd.prototype[Symbol.iterator]=function(){return this});function AS(n){try{return new RegExp(n,ml),!0}catch{return!1}}function Ts(n,e){if(e>=n.length)return e;let t=n.lineAt(e),i;for(;e<t.to&&(i=t.text.charCodeAt(e-t.from))>=56320&&i<57344;)e++;return e}function Xo(n){let e=String(n.state.doc.lineAt(n.state.selection.main.head).number),t=N("input",{class:"cm-textfield",name:"line",value:e}),i=N("form",{class:"cm-gotoLine",onkeydown:r=>{r.keyCode==27?(r.preventDefault(),n.dispatch({effects:Cs.of(!1)}),n.focus()):r.keyCode==13&&(r.preventDefault(),s())},onsubmit:r=>{r.preventDefault(),s()}},N("label",n.state.phrase("Go to line"),": ",t)," ",N("button",{class:"cm-button",type:"submit"},n.state.phrase("go")));function s(){let r=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(t.value);if(!r)return;let{state:o}=n,l=o.doc.lineAt(o.selection.main.head),[,a,h,c,f]=r,u=c?+c.slice(1):0,d=h?+h:l.number;if(h&&f){let g=d/100;a&&(g=g*(a=="-"?-1:1)+l.number/o.doc.lines),d=Math.round(o.doc.lines*g)}else h&&a&&(d=d*(a=="-"?-1:1)+l.number);let O=o.doc.line(Math.max(1,Math.min(o.doc.lines,d))),m=y.cursor(O.from+Math.max(0,Math.min(u,O.length)));n.dispatch({effects:[Cs.of(!1),v.scrollIntoView(m.from,{y:"center"})],selection:m}),n.focus()}return{dom:i}}const Cs=A.define(),Vh=oe.define({create(){return!0},update(n,e){for(let t of e.effects)t.is(Cs)&&(n=t.value);return n},provide:n=>Ki.from(n,e=>e?Xo:null)}),XS=n=>{let e=Hi(n,Xo);if(!e){let t=[Cs.of(!0)];n.state.field(Vh,!1)==null&&t.push(A.appendConfig.of([Vh,MS])),n.dispatch({effects:t}),e=Hi(n,Xo)}return e&&e.dom.querySelector("input").select(),!0},MS=v.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),WS={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},YS=T.define({combine(n){return lt(n,WS,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})}});function qS(n){return[zS,DS]}const ES=R.mark({class:"cm-selectionMatch"}),VS=R.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function _h(n,e,t,i){return(t==0||n(e.sliceDoc(t-1,t))!=F.Word)&&(i==e.doc.length||n(e.sliceDoc(i,i+1))!=F.Word)}function _S(n,e,t,i){return n(e.sliceDoc(t,t+1))==F.Word&&n(e.sliceDoc(i-1,i))==F.Word}const DS=ne.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.selectionSet||n.docChanged||n.viewportChanged)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=n.state.facet(YS),{state:t}=n,i=t.selection;if(i.ranges.length>1)return R.none;let s=i.main,r,o=null;if(s.empty){if(!e.highlightWordAroundCursor)return R.none;let a=t.wordAt(s.head);if(!a)return R.none;o=t.charCategorizer(s.head),r=t.sliceDoc(a.from,a.to)}else{let a=s.to-s.from;if(a<e.minSelectionLength||a>200)return R.none;if(e.wholeWords){if(r=t.sliceDoc(s.from,s.to),o=t.charCategorizer(s.head),!(_h(o,t,s.from,s.to)&&_S(o,t,s.from,s.to)))return R.none}else if(r=t.sliceDoc(s.from,s.to),!r)return R.none}let l=[];for(let a of n.visibleRanges){let h=new gi(t.doc,r,a.from,a.to);for(;!h.next().done;){let{from:c,to:f}=h.value;if((!o||_h(o,t,c,f))&&(s.empty&&c<=s.from&&f>=s.to?l.push(VS.range(c,f)):(c>=s.to||f<=s.from)&&l.push(ES.range(c,f)),l.length>e.maxMatches))return R.none}}return R.set(l)}},{decorations:n=>n.decorations}),zS=v.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),US=({state:n,dispatch:e})=>{let{selection:t}=n,i=y.create(t.ranges.map(s=>n.wordAt(s.head)||y.cursor(s.head)),t.mainIndex);return i.eq(t)?!1:(e(n.update({selection:i})),!0)};function jS(n,e){let{main:t,ranges:i}=n.selection,s=n.wordAt(t.head),r=s&&s.from==t.from&&s.to==t.to;for(let o=!1,l=new gi(n.doc,e,i[i.length-1].to);;)if(l.next(),l.done){if(o)return null;l=new gi(n.doc,e,0,Math.max(0,i[i.length-1].from-1)),o=!0}else{if(o&&i.some(a=>a.from==l.value.from))continue;if(r){let a=n.wordAt(l.value.from);if(!a||a.from!=l.value.from||a.to!=l.value.to)continue}return l.value}}const BS=({state:n,dispatch:e})=>{let{ranges:t}=n.selection;if(t.some(r=>r.from===r.to))return US({state:n,dispatch:e});let i=n.sliceDoc(t[0].from,t[0].to);if(n.selection.ranges.some(r=>n.sliceDoc(r.from,r.to)!=i))return!1;let s=jS(n,i);return s?(e(n.update({selection:n.selection.addRange(y.range(s.from,s.to),!1),effects:v.scrollIntoView(s.to)})),!0):!1},Qi=T.define({combine(n){return lt(n,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new nx(e),scrollToMatch:e=>v.scrollIntoView(e)})}});class Rd{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||AS(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(t,i)=>i=="n"?`
+`:i=="r"?"\r":i=="t"?"	":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new LS(this):new IS(this)}getCursor(e,t=0,i){let s=e.doc?e:D.create({doc:e});return i==null&&(i=s.doc.length),this.regexp?Ht(this,s,t,i):Ft(this,s,t,i)}}class Ad{constructor(e){this.spec=e}}function Ft(n,e,t,i){return new gi(e.doc,n.unquoted,t,i,n.caseSensitive?void 0:s=>s.toLowerCase(),n.wholeWord?NS(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function NS(n,e){return(t,i,s,r)=>((r>t||r+s.length<i)&&(r=Math.max(0,t-2),s=n.sliceString(r,Math.min(n.length,i+2))),(e(Rs(s,t-r))!=F.Word||e(As(s,t-r))!=F.Word)&&(e(As(s,i-r))!=F.Word||e(Rs(s,i-r))!=F.Word))}class IS extends Ad{constructor(e){super(e)}nextMatch(e,t,i){let s=Ft(this.spec,e,i,e.doc.length).nextOverlapping();return s.done&&(s=Ft(this.spec,e,0,t).nextOverlapping()),s.done?null:s.value}prevMatchInRange(e,t,i){for(let s=i;;){let r=Math.max(t,s-1e4-this.spec.unquoted.length),o=Ft(this.spec,e,r,s),l=null;for(;!o.nextOverlapping().done;)l=o.value;if(l)return l;if(r==t)return null;s-=1e4}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let i=Ft(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let r=Ft(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,e.doc.length));for(;!r.next().done;)s(r.value.from,r.value.to)}}function Ht(n,e,t,i){return new Td(e.doc,n.search,{ignoreCase:!n.caseSensitive,test:n.wholeWord?GS(e.charCategorizer(e.selection.main.head)):void 0},t,i)}function Rs(n,e){return n.slice(ue(n,e,!1),e)}function As(n,e){return n.slice(e,ue(n,e))}function GS(n){return(e,t,i)=>!i[0].length||(n(Rs(i.input,i.index))!=F.Word||n(As(i.input,i.index))!=F.Word)&&(n(As(i.input,i.index+i[0].length))!=F.Word||n(Rs(i.input,i.index+i[0].length))!=F.Word)}class LS extends Ad{nextMatch(e,t,i){let s=Ht(this.spec,e,i,e.doc.length).next();return s.done&&(s=Ht(this.spec,e,0,t).next()),s.done?null:s.value}prevMatchInRange(e,t,i){for(let s=1;;s++){let r=Math.max(t,i-s*1e4),o=Ht(this.spec,e,r,i),l=null;for(;!o.next().done;)l=o.value;if(l&&(r==t||l.from>r+10))return l;if(r==t)return null}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&\d+])/g,(t,i)=>i=="$"?"$":i=="&"?e.match[0]:i!="0"&&+i<e.match.length?e.match[i]:t)}matchAll(e,t){let i=Ht(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let r=Ht(this.spec,e,Math.max(0,t-250),Math.min(i+250,e.doc.length));for(;!r.next().done;)s(r.value.from,r.value.to)}}const ln=A.define(),gl=A.define(),kt=oe.define({create(n){return new Cr(Mo(n).create(),null)},update(n,e){for(let t of e.effects)t.is(ln)?n=new Cr(t.value.create(),n.panel):t.is(gl)&&(n=new Cr(n.query,t.value?bl:null));return n},provide:n=>Ki.from(n,e=>e.panel)});class Cr{constructor(e,t){this.query=e,this.panel=t}}const FS=R.mark({class:"cm-searchMatch"}),HS=R.mark({class:"cm-searchMatch cm-searchMatch-selected"}),KS=ne.fromClass(class{constructor(n){this.view=n,this.decorations=this.highlight(n.state.field(kt))}update(n){let e=n.state.field(kt);(e!=n.startState.field(kt)||n.docChanged||n.selectionSet||n.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:n,panel:e}){if(!e||!n.spec.valid)return R.none;let{view:t}=this,i=new vt;for(let s=0,r=t.visibleRanges,o=r.length;s<o;s++){let{from:l,to:a}=r[s];for(;s<o-1&&a>r[s+1].from-2*250;)a=r[++s].to;n.highlight(t.state,l,a,(h,c)=>{let f=t.state.selection.ranges.some(u=>u.from==h&&u.to==c);i.add(h,c,f?HS:FS)})}return i.finish()}},{decorations:n=>n.decorations});function bn(n){return e=>{let t=e.state.field(kt,!1);return t&&t.query.spec.valid?n(e,t):Wd(e)}}const Xs=bn((n,{query:e})=>{let{to:t}=n.state.selection.main,i=e.nextMatch(n.state,t,t);if(!i)return!1;let s=y.single(i.from,i.to),r=n.state.facet(Qi);return n.dispatch({selection:s,effects:[yl(n,i),r.scrollToMatch(s.main,n)],userEvent:"select.search"}),Md(n),!0}),Ms=bn((n,{query:e})=>{let{state:t}=n,{from:i}=t.selection.main,s=e.prevMatch(t,i,i);if(!s)return!1;let r=y.single(s.from,s.to),o=n.state.facet(Qi);return n.dispatch({selection:r,effects:[yl(n,s),o.scrollToMatch(r.main,n)],userEvent:"select.search"}),Md(n),!0}),JS=bn((n,{query:e})=>{let t=e.matchAll(n.state,1e3);return!t||!t.length?!1:(n.dispatch({selection:y.create(t.map(i=>y.range(i.from,i.to))),userEvent:"select.search.matches"}),!0)}),ex=({state:n,dispatch:e})=>{let t=n.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:i,to:s}=t.main,r=[],o=0;for(let l=new gi(n.doc,n.sliceDoc(i,s));!l.next().done;){if(r.length>1e3)return!1;l.value.from==i&&(o=r.length),r.push(y.range(l.value.from,l.value.to))}return e(n.update({selection:y.create(r,o),userEvent:"select.search.matches"})),!0},Dh=bn((n,{query:e})=>{let{state:t}=n,{from:i,to:s}=t.selection.main;if(t.readOnly)return!1;let r=e.nextMatch(t,i,i);if(!r)return!1;let o=[],l,a,h=[];if(r.from==i&&r.to==s&&(a=t.toText(e.getReplacement(r)),o.push({from:r.from,to:r.to,insert:a}),r=e.nextMatch(t,r.from,r.to),h.push(v.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(i).number)+"."))),r){let c=o.length==0||o[0].from>=r.to?0:r.to-r.from-a.length;l=y.single(r.from-c,r.to-c),h.push(yl(n,r)),h.push(t.facet(Qi).scrollToMatch(l.main,n))}return n.dispatch({changes:o,selection:l,effects:h,userEvent:"input.replace"}),!0}),tx=bn((n,{query:e})=>{if(n.state.readOnly)return!1;let t=e.matchAll(n.state,1e9).map(s=>{let{from:r,to:o}=s;return{from:r,to:o,insert:e.getReplacement(s)}});if(!t.length)return!1;let i=n.state.phrase("replaced $ matches",t.length)+".";return n.dispatch({changes:t,effects:v.announce.of(i),userEvent:"input.replace.all"}),!0});function bl(n){return n.state.facet(Qi).createPanel(n)}function Mo(n,e){var t,i,s,r,o;let l=n.selection.main,a=l.empty||l.to>l.from+100?"":n.sliceDoc(l.from,l.to);if(e&&!a)return e;let h=n.facet(Qi);return new Rd({search:((t=e==null?void 0:e.literal)!==null&&t!==void 0?t:h.literal)?a:a.replace(/\n/g,"\\n"),caseSensitive:(i=e==null?void 0:e.caseSensitive)!==null&&i!==void 0?i:h.caseSensitive,literal:(s=e==null?void 0:e.literal)!==null&&s!==void 0?s:h.literal,regexp:(r=e==null?void 0:e.regexp)!==null&&r!==void 0?r:h.regexp,wholeWord:(o=e==null?void 0:e.wholeWord)!==null&&o!==void 0?o:h.wholeWord})}function Xd(n){let e=Hi(n,bl);return e&&e.dom.querySelector("[main-field]")}function Md(n){let e=Xd(n);e&&e==n.root.activeElement&&e.select()}const Wd=n=>{let e=n.state.field(kt,!1);if(e&&e.panel){let t=Xd(n);if(t&&t!=n.root.activeElement){let i=Mo(n.state,e.query.spec);i.valid&&n.dispatch({effects:ln.of(i)}),t.focus(),t.select()}}else n.dispatch({effects:[gl.of(!0),e?ln.of(Mo(n.state,e.query.spec)):A.appendConfig.of(rx)]});return!0},Yd=n=>{let e=n.state.field(kt,!1);if(!e||!e.panel)return!1;let t=Hi(n,bl);return t&&t.dom.contains(n.root.activeElement)&&n.focus(),n.dispatch({effects:gl.of(!1)}),!0},ix=[{key:"Mod-f",run:Wd,scope:"editor search-panel"},{key:"F3",run:Xs,shift:Ms,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Xs,shift:Ms,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Yd,scope:"editor search-panel"},{key:"Mod-Shift-l",run:ex},{key:"Mod-Alt-g",run:XS},{key:"Mod-d",run:BS,preventDefault:!0}];class nx{constructor(e){this.view=e;let t=this.query=e.state.field(kt).query.spec;this.commit=this.commit.bind(this),this.searchField=N("input",{value:t.search,placeholder:Re(e,"Find"),"aria-label":Re(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=N("input",{value:t.replace,placeholder:Re(e,"Replace"),"aria-label":Re(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=N("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=N("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=N("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function i(s,r,o){return N("button",{class:"cm-button",name:s,onclick:r,type:"button"},o)}this.dom=N("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,i("next",()=>Xs(e),[Re(e,"next")]),i("prev",()=>Ms(e),[Re(e,"previous")]),i("select",()=>JS(e),[Re(e,"all")]),N("label",null,[this.caseField,Re(e,"match case")]),N("label",null,[this.reField,Re(e,"regexp")]),N("label",null,[this.wordField,Re(e,"by word")]),...e.state.readOnly?[]:[N("br"),this.replaceField,i("replace",()=>Dh(e),[Re(e,"replace")]),i("replaceAll",()=>tx(e),[Re(e,"replace all")])],N("button",{name:"close",onclick:()=>Yd(e),"aria-label":Re(e,"close"),type:"button"},["×"])])}commit(){let e=new Rd({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:ln.of(e)}))}keydown(e){tm(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Ms:Xs)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),Dh(this.view))}update(e){for(let t of e.transactions)for(let i of t.effects)i.is(ln)&&!i.value.eq(this.query)&&this.setQuery(i.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Qi).top}}function Re(n,e){return n.state.phrase(e)}const Vn=30,_n=/[\s\.,:;?!]/;function yl(n,{from:e,to:t}){let i=n.state.doc.lineAt(e),s=n.state.doc.lineAt(t).to,r=Math.max(i.from,e-Vn),o=Math.min(s,t+Vn),l=n.state.sliceDoc(r,o);if(r!=i.from){for(let a=0;a<Vn;a++)if(!_n.test(l[a+1])&&_n.test(l[a])){l=l.slice(a);break}}if(o!=s){for(let a=l.length-1;a>l.length-Vn;a--)if(!_n.test(l[a-1])&&_n.test(l[a])){l=l.slice(0,a);break}}return v.announce.of(`${n.state.phrase("current match")}. ${l} ${n.state.phrase("on line")} ${i.number}.`)}const sx=v.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),rx=[kt,Xt.low(KS),sx];class ox{constructor(e,t,i){this.from=e,this.to=t,this.diagnostic=i}}class Et{constructor(e,t,i){this.diagnostics=e,this.panel=t,this.selected=i}static init(e,t,i){let s=e,r=i.facet(an).markerFilter;r&&(s=r(s,i));let o=R.set(s.map(l=>l.from==l.to||l.from==l.to-1&&i.doc.lineAt(l.from).to==l.from?R.widget({widget:new px(l),diagnostic:l}).range(l.from):R.mark({attributes:{class:"cm-lintRange cm-lintRange-"+l.severity+(l.markClass?" "+l.markClass:"")},diagnostic:l}).range(l.from,l.to)),!0);return new Et(o,t,bi(o))}}function bi(n,e=null,t=0){let i=null;return n.between(t,1e9,(s,r,{spec:o})=>{if(!(e&&o.diagnostic!=e))return i=new ox(s,r,o.diagnostic),!1}),i}function lx(n,e){let t=e.pos,i=e.end||t,s=n.state.facet(an).hideOn(n,t,i);if(s!=null)return s;let r=n.startState.doc.lineAt(e.pos);return!!(n.effects.some(o=>o.is(qd))||n.changes.touchesRange(r.from,Math.max(r.to,i)))}function ax(n,e){return n.field(Xe,!1)?e:e.concat(A.appendConfig.of(bx))}const qd=A.define(),Sl=A.define(),Ed=A.define(),Xe=oe.define({create(){return new Et(R.none,null,null)},update(n,e){if(e.docChanged&&n.diagnostics.size){let t=n.diagnostics.map(e.changes),i=null,s=n.panel;if(n.selected){let r=e.changes.mapPos(n.selected.from,1);i=bi(t,n.selected.diagnostic,r)||bi(t,null,r)}!t.size&&s&&e.state.facet(an).autoPanel&&(s=null),n=new Et(t,s,i)}for(let t of e.effects)if(t.is(qd)){let i=e.state.facet(an).autoPanel?t.value.length?hn.open:null:n.panel;n=Et.init(t.value,i,e.state)}else t.is(Sl)?n=new Et(n.diagnostics,t.value?hn.open:null,n.selected):t.is(Ed)&&(n=new Et(n.diagnostics,n.panel,t.value));return n},provide:n=>[Ki.from(n,e=>e.panel),v.decorations.from(n,e=>e.diagnostics)]}),hx=R.mark({class:"cm-lintRange cm-lintRange-active"});function cx(n,e,t){let{diagnostics:i}=n.state.field(Xe),s=[],r=2e8,o=0;i.between(e-(t<0?1:0),e+(t>0?1:0),(a,h,{spec:c})=>{e>=a&&e<=h&&(a==h||(e>a||t>0)&&(e<h||t<0))&&(s.push(c.diagnostic),r=Math.min(a,r),o=Math.max(h,o))});let l=n.state.facet(an).tooltipFilter;return l&&(s=l(s,n.state)),s.length?{pos:r,end:o,above:n.state.doc.lineAt(r).to<o,create(){return{dom:fx(n,s)}}}:null}function fx(n,e){return N("ul",{class:"cm-tooltip-lint"},e.map(t=>_d(n,t,!1)))}const ux=n=>{let e=n.state.field(Xe,!1);(!e||!e.panel)&&n.dispatch({effects:ax(n.state,[Sl.of(!0)])});let t=Hi(n,hn.open);return t&&t.dom.querySelector(".cm-panel-lint ul").focus(),!0},zh=n=>{let e=n.state.field(Xe,!1);return!e||!e.panel?!1:(n.dispatch({effects:Sl.of(!1)}),!0)},dx=n=>{let e=n.state.field(Xe,!1);if(!e)return!1;let t=n.state.selection.main,i=e.diagnostics.iter(t.to+1);return!i.value&&(i=e.diagnostics.iter(0),!i.value||i.from==t.from&&i.to==t.to)?!1:(n.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0}),!0)},Ox=[{key:"Mod-Shift-m",run:ux,preventDefault:!0},{key:"F8",run:dx}],an=T.define({combine(n){return Object.assign({sources:n.map(e=>e.source).filter(e=>e!=null)},lt(n.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{needsRefresh:(e,t)=>e?t?i=>e(i)||t(i):e:t}))}});function Vd(n){let e=[];if(n)e:for(let{name:t}of n){for(let i=0;i<t.length;i++){let s=t[i];if(/[a-zA-Z]/.test(s)&&!e.some(r=>r.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function _d(n,e,t){var i;let s=t?Vd(e.actions):[];return N("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},N("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(n):e.message),(i=e.actions)===null||i===void 0?void 0:i.map((r,o)=>{let l=!1,a=u=>{if(u.preventDefault(),l)return;l=!0;let d=bi(n.state.field(Xe).diagnostics,e);d&&r.apply(n,d.from,d.to)},{name:h}=r,c=s[o]?h.indexOf(s[o]):-1,f=c<0?h:[h.slice(0,c),N("u",h.slice(c,c+1)),h.slice(c+1)];return N("button",{type:"button",class:"cm-diagnosticAction",onclick:a,onmousedown:a,"aria-label":` Action: ${h}${c<0?"":` (access key "${s[o]})"`}.`},f)}),e.source&&N("div",{class:"cm-diagnosticSource"},e.source))}class px extends mt{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return N("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class Uh{constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=_d(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class hn{constructor(e){this.view=e,this.items=[];let t=s=>{if(s.keyCode==27)zh(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:r}=this.items[this.selectedIndex],o=Vd(r.actions);for(let l=0;l<o.length;l++)if(o[l].toUpperCase().charCodeAt(0)==s.keyCode){let a=bi(this.view.state.field(Xe).diagnostics,r);a&&r.actions[l].apply(e,a.from,a.to)}}else return;s.preventDefault()},i=s=>{for(let r=0;r<this.items.length;r++)this.items[r].dom.contains(s.target)&&this.moveSelection(r)};this.list=N("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:t,onclick:i}),this.dom=N("div",{class:"cm-panel-lint"},this.list,N("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>zh(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Xe).selected;if(!e)return-1;for(let t=0;t<this.items.length;t++)if(this.items[t].diagnostic==e.diagnostic)return t;return-1}update(){let{diagnostics:e,selected:t}=this.view.state.field(Xe),i=0,s=!1,r=null;for(e.between(0,this.view.state.doc.length,(o,l,{spec:a})=>{let h=-1,c;for(let f=i;f<this.items.length;f++)if(this.items[f].diagnostic==a.diagnostic){h=f;break}h<0?(c=new Uh(this.view,a.diagnostic),this.items.splice(i,0,c),s=!0):(c=this.items[h],h>i&&(this.items.splice(i,h-i),s=!0)),t&&c.diagnostic==t.diagnostic?c.dom.hasAttribute("aria-selected")||(c.dom.setAttribute("aria-selected","true"),r=c):c.dom.hasAttribute("aria-selected")&&c.dom.removeAttribute("aria-selected"),i++});i<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)s=!0,this.items.pop();this.items.length==0&&(this.items.push(new Uh(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),s=!0),r?(this.list.setAttribute("aria-activedescendant",r.id),this.view.requestMeasure({key:this,read:()=>({sel:r.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:o,panel:l})=>{let a=l.height/this.list.offsetHeight;o.top<l.top?this.list.scrollTop-=(l.top-o.top)/a:o.bottom>l.bottom&&(this.list.scrollTop+=(o.bottom-l.bottom)/a)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function t(){let i=e;e=i.nextSibling,i.remove()}for(let i of this.items)if(i.dom.parentNode==this.list){for(;e!=i.dom;)t();e=i.dom.nextSibling}else this.list.insertBefore(i.dom,e);for(;e;)t()}moveSelection(e){if(this.selectedIndex<0)return;let t=this.view.state.field(Xe),i=bi(t.diagnostics,this.items[e].diagnostic);i&&this.view.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0,effects:Ed.of(i)})}static open(e){return new hn(e)}}function mx(n,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${e}>${encodeURIComponent(n)}</svg>')`}function Dn(n){return mx(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${n}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}const gx=v.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:Dn("#d11")},".cm-lintRange-warning":{backgroundImage:Dn("orange")},".cm-lintRange-info":{backgroundImage:Dn("#999")},".cm-lintRange-hint":{backgroundImage:Dn("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}}),bx=[Xe,v.decorations.compute([Xe],n=>{let{selected:e,panel:t}=n.field(Xe);return!e||!t||e.from==e.to?R.none:R.set([hx.range(e.from,e.to)])}),Vm(cx,{hideOn:lx}),gx],Dx=[Gm(),Hm(),xf(),Lu(),Bg(),bf(),fm(),D.allowMultipleSelections.of(!0),Ag(),nl(Gf,{fallback:!0}),t0(),qb(),Gb(),Zm(),Rm(),Qm(),qS(),un.of([...Db,...kd,...ix,...Ju,...Dg,...du,...Ox])],zx=[xf(),Lu(),bf(),nl(Gf,{fallback:!0}),un.of([...kd,...Ju])];export{rO as A,t1 as B,A1 as C,Vx as D,v as E,Sx as F,wx as G,Qx as H,Mx as S,$x as a,Gd as b,Xx as c,Id as d,Ih as e,Gh as f,Nh as g,vx as h,Ax as i,kx as j,A as k,wl as l,zx as m,ss as n,Px as o,Dx as p,Ex as q,un as r,xx as s,_x as t,Cx as u,Rx as v,sO as w,Zx as x,nO as y,Tx as z};
diff --git a/Implem.Pleasanter/wwwroot/scripts/sitesettings.js b/Implem.Pleasanter/wwwroot/scripts/sitesettings.js
index d9a2cd4ec..2cf705f6b 100644
--- a/Implem.Pleasanter/wwwroot/scripts/sitesettings.js
+++ b/Implem.Pleasanter/wwwroot/scripts/sitesettings.js
@@ -13,12 +13,16 @@ $p.openSiteSettingsDialog = function ($control, selector, width) {
     var error = $p.syncSend($control);
     if (error === 0) {
         $(selector).dialog({
+            autoOpen: false,
             modal: true,
             width: width !== undefined ? width : '90%',
             height: 'auto',
             appendTo: '#Editor',
             resizable: false
         });
+        setTimeout(function () {
+            $(selector).dialog("open");
+        })
     }
 }
 
diff --git a/Implem.Pleasanter/wwwroot/styles/plugins/themes/themes.custom.css b/Implem.Pleasanter/wwwroot/styles/plugins/themes/themes.custom.css
index 8928b1f9c..ea8d7e627 100644
--- a/Implem.Pleasanter/wwwroot/styles/plugins/themes/themes.custom.css
+++ b/Implem.Pleasanter/wwwroot/styles/plugins/themes/themes.custom.css
@@ -1,4 +1,4 @@
-/* Reset ---------------------------------------------------------------- */
+/* Reset ---------------------------------------------------------------- */
 body {
     color: var(--base-text);
     background-color: var(--page-bg);
@@ -106,12 +106,15 @@ html .ui-button.ui-state-disabled:active {
 
 /* dialog */
 .ui-dialog {
+    min-width: 400px;
     padding: 0;
-    border: none;
+    border: none!important;
+    background-color: transparent;
     .ui-dialog-titlebar {
+        margin: 16px 16px 0;
         background: var(--base-bg);
-        border: none;
-        border-bottom: 1px solid var(--base-border);
+        border: 1px solid var(--base-border);
+        border-bottom: none;
         color: var(--base-text);
         padding: 8px 16px;
     }
@@ -125,6 +128,12 @@ html .ui-button.ui-state-disabled:active {
             box-shadow: none;
         }
     }
+    .ui-dialog-content{
+        margin: 0 16px 16px;
+        border: 1px solid var(--base-border);
+        padding: 16px 16px 0 !important;
+        background: var(--base-bg-light);
+    }
 }
 
 /* tabs */
@@ -355,13 +364,10 @@ html .ui-button.ui-state-disabled:active {
         }
     }
     &:not(.has-css) {
-        color: var(--control-text);
-        background-color: var(--control-bg);
         &:focus {
             background-color: var(--control-bg-focus);
         }
         &.not-send{
-            background: var(--control-bg);
             &:not(:has(+ .button-edit-markdown)){
                 background: var(--control-bg-read);
                 pre{
@@ -381,6 +387,23 @@ html .ui-button.ui-state-disabled:active {
     }
 }
 
+textarea,
+select,
+input{
+    color: var(--control-text);
+    background-color: var(--control-bg);
+    &:focus {
+        &:not(.control-spinner) {
+            border: 1px solid var(--control-border-focus);
+        }
+    }
+}
+.ui-widget.ui-state-default.ui-multiselect {
+    color: var(--control-text);
+    background-color: var(--control-bg);
+}
+
+
 /* dummy-field */
 .control-text,
 .control-basket {
@@ -403,13 +426,22 @@ html .ui-button.ui-state-disabled:active {
     text-overflow: ellipsis;
     overflow: hidden;
     white-space: nowrap;
-
+    &:has(+ .current-user){
+        appearance: none;
+        padding-right: 24px;
+        + .ui-icon{
+            right: 4px;
+            z-index: 2;
+        }
+    }
 }
 
 /* input-field */
 .control-textbox {
     position: relative;
-    padding: 4px 8px 4px 8px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    white-space: nowrap;
     &.error {
         border: solid 1px var(--warning-color);
     }
@@ -417,12 +449,19 @@ html .ui-button.ui-state-disabled:active {
         padding: 1px;
     }
     &.datepicker{
+        padding-right: 24px;
         + .ui-icon{
-            right: 2px;
+            right: 4px;
+            z-index: 2;
         }
     }
 }
 
+/* input-spinner */
+.control-spinner{
+    color: var(--control-text);
+}
+
 /* fileUpload */
 .control-attachments-upload {
     border-color: var(--primaryColor) !important;
@@ -476,6 +515,8 @@ html .ui-button.ui-state-disabled:active {
         border: 1px solid var(--control-border);
     }
     .control-markup {
+        color: var(--control-text);
+        background-color: var(--control-bg);
         .md,
         pre {
             color: var(--control-text);
@@ -494,10 +535,36 @@ html .ui-button.ui-state-disabled:active {
     font-weight: lighter;
 }
 
+/* status-color */
 .status-new,
 .status-review {
     color: var(--nonColor02);
 }
+.status-preparation,
+.status-inprogress,
+.status-closed,
+.status-rejected {
+    color: var(--nonColor16);
+}
+.status-new {
+    background: #fff
+}
+.status-preparation {
+    background: #ff8c00
+}
+.status-inprogress {
+    background: #008000
+}
+.status-review {
+    background: #ff0
+}
+.status-closed {
+    background: #00f
+}
+.status-rejected {
+    background: #808080
+}
+
 
 /* user */
 .user {
@@ -595,6 +662,11 @@ html .ui-button.ui-state-disabled:active {
             color: var(--control-error);
         }
     }
+    .control-spinner{
+        ~ .error{
+            top: -10px;
+        }
+    }
 }
 
 /* field-section */
@@ -1550,6 +1622,7 @@ body {
         margin: 0;
         padding: 16px;
         display: flex;
+        gap: 0 20px;
         align-items: center;
         color: var(--base-text);
         background-color: var(--page-bg);
@@ -1558,10 +1631,13 @@ body {
         flex: 1;
         float: none;
         display: flex;
+        gap: 8px 48px;
+        flex-wrap: wrap;
         div,
         p,
         span {
             gap: 8px;
+            margin-right: 0;
             float: none;
             display: flex;
             align-items: center;
@@ -1721,8 +1797,6 @@ body:not(:has(#Editor)){
 /* Module ---------------------------------------------------------------- */
 /* Dialog */
 .dialog {
-    margin-top: 16px;
-    padding: 0 16px !important;
     .fieldset {
         margin: 0;
         + .fieldset:not(.ui-tabs-panel) {
@@ -1942,7 +2016,6 @@ body:not(:has(#Editor)){
         }
         > tbody {
             > tr {
-                background-color: var(--grid-cell-bg);
                 &:hover {
                     background-color: var(--grid-cell-hover);
                     .comment {
@@ -1954,7 +2027,6 @@ body:not(:has(#Editor)){
                 }
                 > th,
                 > td {
-                    border-top: solid 1px var(--grid-cell-border);
                     border-left: solid 1px var(--grid-cell-vborder);
                     border-right: solid 1px var(--grid-cell-vborder);
                 }
@@ -2037,7 +2109,18 @@ body:not(:has(#Editor)){
         }
     }
 }
+.grid-row {
+    border-top: solid 1px var(--grid-cell-border);
+    border-bottom: solid 1px var(--grid-cell-border);
+    background-color: var(--grid-cell-bg);
 
+    /* 一括編集設定 */
+    .ui-widget.ui-state-default.ui-multiselect{
+        width: 100%;
+        white-space: nowrap;
+        max-width: 200px;
+    }
+}
 
 /* Component ---------------------------------------------------------------- */
 /* focus-inform */
@@ -2377,7 +2460,7 @@ body:has(input#Controller[value="syslogs"]){
 
 /* [Dialog] OutgoingMailDialog */
 #OutgoingMailDialog {
-    margin: 0 !important;
+    padding: 0 !important;
 }
 
 /* [Dialog] ExportSitePackage */
@@ -2836,6 +2919,13 @@ body:has(input#Controller[value="syslogs"]){
             background-color: var(--grid-cell-hover);
         }
     }
+    .kamban-row {
+        border-top: solid 1px var(--grid-cell-border);
+        border-bottom: solid 1px var(--grid-cell-border);
+        th{
+            border-bottom: solid 1px var(--grid-cell-border);
+        }
+    }
     .kamban-item {
         border-radius: 4px;
         color: var(--nonColor02);
diff --git a/Implem.TestAutomation/implem.TestAutomation.csproj b/Implem.TestAutomation/implem.TestAutomation.csproj
index f648570c8..9ff9333a3 100644
--- a/Implem.TestAutomation/implem.TestAutomation.csproj
+++ b/Implem.TestAutomation/implem.TestAutomation.csproj
@@ -4,9 +4,9 @@
     <OutputType>Exe</OutputType>
     <TargetFramework>net8.0</TargetFramework>
     <Copyright>Copyright © Implem Inc 2014 - 2024</Copyright>
-    <AssemblyVersion>1.4.8.1</AssemblyVersion>
-    <FileVersion>1.4.8.1</FileVersion>
-    <Version>1.4.8.1</Version>
+    <AssemblyVersion>1.4.9.0</AssemblyVersion>
+    <FileVersion>1.4.9.0</FileVersion>
+    <Version>1.4.9.0</Version>
     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>  
   </PropertyGroup>
 
@@ -25,11 +25,11 @@
     <PackageReference Include="CsvHelper" Version="33.0.1" />
     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
-    <PackageReference Include="Selenium.Support" Version="4.23.0" />
-    <PackageReference Include="Selenium.WebDriver" Version="4.23.0" />
-    <PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="126.0.6478.18200" />
+    <PackageReference Include="Selenium.Support" Version="4.25.0" />
+    <PackageReference Include="Selenium.WebDriver" Version="4.25.0" />
+    <PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="129.0.6668.7000" />
     <PackageReference Include="Selenium.WebDriver.IEDriver" Version="4.14.0" />
-    <PackageReference Include="Selenium.WebDriver.MSEdgeDriver" Version="126.0.2592.102" />
+    <PackageReference Include="Selenium.WebDriver.MSEdgeDriver" Version="129.0.2792.65" />
     <PackageReference Include="Selenium.WebDriverBackedSelenium" Version="4.1.0" />
     <PackageReference Include="SixLabors.ImageSharp" Version="3.1.5" />
     <PackageReference Include="System.ValueTuple" Version="4.5.0" />
diff --git a/Rds/Implem.IRds/ISqlCommandText.cs b/Rds/Implem.IRds/ISqlCommandText.cs
index 607d9be61..a3246d6bb 100644
--- a/Rds/Implem.IRds/ISqlCommandText.cs
+++ b/Rds/Implem.IRds/ISqlCommandText.cs
@@ -5,6 +5,8 @@ namespace Implem.IRds
 {
     public interface ISqlCommandText
     {
+        string BeforeAllCommand();
+
         string CreateSelectIdentity(
             string dataTableName,
             string template,
@@ -17,7 +19,8 @@ string CreateUpdateOrInsert(
             string setClause,
             Action<StringBuilder> sqlWhereAppender,
             string intoClause,
-            string valueClause);
+            string valueClause,
+            string selectClauseForMySql);
 
         string CreateTopClause(int top);
 
@@ -36,5 +39,7 @@ string CreateUpdateOrInsert(
         string CreateFullTextWhereBinary(string itemsTableName, string paramName, bool negative);
 
         Dictionary<string,string> CreateSearchTextWords(Dictionary<string,string> words, string searchText);
+
+        string CreateDataRangeCommand(int? commandCount);
     }
 }
diff --git a/Rds/Implem.IRds/ISqlDataTypes.cs b/Rds/Implem.IRds/ISqlDataTypes.cs
index f0d8f6d5f..5ccbec5d9 100644
--- a/Rds/Implem.IRds/ISqlDataTypes.cs
+++ b/Rds/Implem.IRds/ISqlDataTypes.cs
@@ -1,9 +1,11 @@
-namespace Implem.IRds
+using System.Data;
+
+namespace Implem.IRds
 {
     public interface ISqlDataType
     {
         string Convert(string name);
         string ConvertBack(string name);
-        string DefaultDefinition(object dbRawValue);
+        string DefaultDefinition(DataRow dataRow);
     }
 }
diff --git a/Rds/Implem.IRds/ISqlDefinitionSetting.cs b/Rds/Implem.IRds/ISqlDefinitionSetting.cs
index e56ec5e5b..8536c31bb 100644
--- a/Rds/Implem.IRds/ISqlDefinitionSetting.cs
+++ b/Rds/Implem.IRds/ISqlDefinitionSetting.cs
@@ -4,6 +4,7 @@ public interface ISqlDefinitionSetting
     {
         int IdentifierPostfixLength { get; }
         int NationalCharacterStoredSizeCoefficient { get; }
+        int ReducedVarcharLength { get; }
         string SchemaName { get; set; }
         bool IsCreatingDb { get; set; }
     }
diff --git a/Rds/Implem.IRds/ISqls.cs b/Rds/Implem.IRds/ISqls.cs
index a502938ab..37287379f 100644
--- a/Rds/Implem.IRds/ISqls.cs
+++ b/Rds/Implem.IRds/ISqls.cs
@@ -39,6 +39,6 @@ public interface ISqls
         string SitePermissionsWhere { get; }
         public string IntegratedSitesPermissionsWhere(string tableName, List<long> sites);
         string UpsertBinary { get; }
-        string GetBinaryHash { get; }
+        string GetBinaryHash(string algorithm);
     }
 }
diff --git a/Rds/Implem.IRds/Implem.IRds.csproj b/Rds/Implem.IRds/Implem.IRds.csproj
index 0919bb634..4a17f330f 100644
--- a/Rds/Implem.IRds/Implem.IRds.csproj
+++ b/Rds/Implem.IRds/Implem.IRds.csproj
@@ -3,9 +3,9 @@
   <PropertyGroup>
     <TargetFramework>net8.0</TargetFramework>
     <Copyright>Copyright © Implem Inc 2014 - 2024</Copyright>
-    <AssemblyVersion>1.4.8.1</AssemblyVersion>
-    <FileVersion>1.4.8.1</FileVersion>
-    <Version>1.4.8.1</Version>
+    <AssemblyVersion>1.4.9.0</AssemblyVersion>
+    <FileVersion>1.4.9.0</FileVersion>
+    <Version>1.4.9.0</Version>
     <Nullable>disable</Nullable>
   </PropertyGroup>
 
diff --git a/Rds/Implem.MySql/Implem.MySql.csproj b/Rds/Implem.MySql/Implem.MySql.csproj
new file mode 100644
index 000000000..4570ca31b
--- /dev/null
+++ b/Rds/Implem.MySql/Implem.MySql.csproj
@@ -0,0 +1,21 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <Copyright>Copyright © Implem Inc 2014 - 2024</Copyright>
+    <AssemblyVersion>1.4.9.0</AssemblyVersion>
+    <FileVersion>1.4.9.0</FileVersion>
+    <Version>1.4.9.0</Version>
+    <Nullable>disable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="MySqlConnector" Version="2.3.7" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Implem.Libraries\Implem.Libraries.csproj" />
+    <ProjectReference Include="..\Implem.IRds\Implem.IRds.csproj" />
+  </ItemGroup>
+
+</Project>
\ No newline at end of file
diff --git a/Rds/Implem.MySql/MySqlCommand.cs b/Rds/Implem.MySql/MySqlCommand.cs
new file mode 100644
index 000000000..c971da549
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlCommand.cs
@@ -0,0 +1,175 @@
+using Implem.IRds;
+using MySqlConnector;
+using System.Collections.Generic;
+using System.Data;
+namespace Implem.MySql
+{
+    internal class MySqlCommand : ISqlCommand
+    {
+        private MySqlConnector.MySqlCommand instance;
+
+        internal MySqlConnector.MySqlCommand InnerInstance
+        {
+            get
+            {
+                return instance;
+            }
+        }
+
+        public MySqlCommand()
+        {
+            instance = new MySqlConnector.MySqlCommand();
+        }
+
+        public string CommandText
+        {
+            get
+            {
+                return instance.CommandText;
+            }
+            set
+            {
+                instance.CommandText = value;
+            }
+        }
+
+        public int CommandTimeout
+        {
+            get
+            {
+                return instance.CommandTimeout;
+            }
+            set
+            {
+                instance.CommandTimeout = value;
+            }
+        }
+
+        public CommandType CommandType
+        {
+            get
+            {
+                return instance.CommandType;
+            }
+            set
+            {
+                instance.CommandType = value;
+            }
+        }
+
+        public IDbConnection Connection
+        {
+            get
+            {
+                return instance.Connection;
+            }
+            set
+            {
+                if (value is MySqlConnector.MySqlConnection mySqlConnectorCon)
+                {
+                    instance.Connection = mySqlConnectorCon;
+                }
+                if (value is MySqlConnection mySqlCon)
+                {
+                    instance.Connection = mySqlCon.InnerInstance;
+                }
+            }
+        }
+
+        public IDataParameterCollection Parameters
+        {
+            get
+            {
+                return instance.Parameters;
+            }
+        }
+
+        public IDbTransaction Transaction
+        {
+            get
+            {
+                return instance.Transaction;
+            }
+            set
+            {
+                instance.Transaction = (MySqlTransaction)value;
+            }
+        }
+
+        public UpdateRowSource UpdatedRowSource
+        {
+            get
+            {
+                return instance.UpdatedRowSource;
+            }
+            set
+            {
+                instance.UpdatedRowSource = value;
+            }
+        }
+
+        public void Cancel()
+        {
+            instance.Cancel();
+        }
+
+        public object Clone()
+        {
+            return instance.Clone();
+        }
+
+        public IDbDataParameter CreateParameter()
+        {
+            return instance.CreateParameter();
+        }
+
+        public void Dispose()
+        {
+            instance.Dispose();
+        }
+
+        public int ExecuteNonQuery()
+        {
+            return instance.ExecuteNonQuery();
+        }
+
+        public IDataReader ExecuteReader()
+        {
+            return instance.ExecuteReader();
+        }
+
+        public IDataReader ExecuteReader(CommandBehavior behavior)
+        {
+            return instance.ExecuteReader(behavior);
+        }
+
+        public object ExecuteScalar()
+        {
+            return instance.ExecuteScalar();
+        }
+
+        public void Prepare()
+        {
+            instance.Prepare();
+        }
+
+        public void Parameters_AddWithValue(string parameterName, object value)
+        {
+            instance.Parameters.AddWithValue(parameterName, value);
+        }
+
+        public void Parameters_Add(ISqlParameter parameter)
+        {
+            instance.Parameters.Add(
+                new MySqlConnector.MySqlParameter(parameter.ParameterName, parameter.Value));
+        }
+
+        public IEnumerable<ISqlParameter> SqlParameters()
+        {
+            foreach (MySqlConnector.MySqlParameter parameter in instance.Parameters)
+            {
+                yield return new MySqlParameter(parameter);
+            }
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlCommandText.cs b/Rds/Implem.MySql/MySqlCommandText.cs
new file mode 100644
index 000000000..ce0851081
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlCommandText.cs
@@ -0,0 +1,125 @@
+using Implem.DefinitionAccessor;
+using Implem.IRds;
+using Implem.Libraries.Utilities;
+using System;
+using System.Collections.Generic;
+using System.Text;
+namespace Implem.MySql
+{
+    internal class MySqlCommandText : ISqlCommandText
+    {
+        public string BeforeAllCommand()
+        {
+            return "set session sql_mode = 'ansi_quotes,pipes_as_concat';";
+        }
+
+        public string CreateDelete(string template)
+        {
+            return template + " ; select row_count() ";
+        }
+
+        public string CreateRestore(string template)
+        {
+            return template + " ; select row_count() ";
+        }
+
+        public string CreateIdentityInsert(string template)
+        {
+            return string.Empty;
+        }
+
+        public string CreateLimitClause(int limit)
+        {
+            return limit > 0 ? $" limit {limit} " : string.Empty;
+        }
+
+        public string CreateSelectIdentity(
+            string dataTableName,
+            string template,
+            string identityColumnName)
+        {
+            return string.Format(
+                template,
+                dataTableName ?? string.Empty);
+        }
+
+        public string CreateSelectStatementTerminator(bool selectIdentity)
+        {
+            return ";";
+        }
+
+        public string CreateTopClause(int top)
+        {
+            return string.Empty;
+        }
+
+        public string CreateTryCast(string left, string name, string from, string to)
+        {
+            string type;
+            switch (to)
+            {
+                case "bigint":
+                    type = "signed";
+                    break;
+                default:
+                    type = to;
+                    break;
+            }
+            return $@"cast(""{left}"".""{name}"" as {type})";
+        }
+
+        public string CreateUpdateOrInsert(
+            string tableBracket,
+            string setClause,
+            Action<StringBuilder> sqlWhereAppender,
+            string intoClause,
+            string valueClause,
+            string selectClauseForMySql)
+        {
+            var update = new StringBuilder($@"
+                update {tableBracket} {setClause}");
+            sqlWhereAppender(update);
+            update.Append("; ");
+            var insert = new StringBuilder($@"
+                insert into {tableBracket} ({intoClause})
+                select * from (select {selectClauseForMySql} ) as tmp
+                where not exists (select 1 from {tableBracket}");
+            sqlWhereAppender(insert);
+            insert.Append(")");
+            return String.Concat(update.ToString(), insert.ToString());
+        }
+
+        public string CreateFullTextWhereItem(
+            string itemsTableName,
+            string paramName,
+            bool negative)
+        {
+            return (negative
+                ? $@"not match(""{itemsTableName}"".""FullText"") against (@{paramName}#CommandCount# in boolean mode)"
+                : $@"match(""{itemsTableName}"".""FullText"") against (@{paramName}#CommandCount# in boolean mode)");
+        }
+
+        public string CreateFullTextWhereBinary(
+            string itemsTableName,
+            string paramName,
+            bool negative)
+        {
+            return "0=1";
+        }
+
+        public Dictionary<string, string> CreateSearchTextWords(
+            Dictionary<string, string> words,
+            string searchText)
+        {
+            return words;
+        }
+
+        public string CreateDataRangeCommand(int? commandCount)
+        {
+            return $"limit {Parameters.Parameter.SqlParameterPrefix}PageSize" +
+                commandCount.ToString() +
+                $" offset {Parameters.Parameter.SqlParameterPrefix}Offset" +
+                commandCount.ToString();
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlConnection.cs b/Rds/Implem.MySql/MySqlConnection.cs
new file mode 100644
index 000000000..2b2940d38
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlConnection.cs
@@ -0,0 +1,99 @@
+using Implem.IRds;
+using System;
+using System.Data;
+namespace Implem.MySql
+{
+    internal class MySqlConnection : ISqlConnection
+    {
+        private MySqlConnector.MySqlConnection instance;
+
+        internal MySqlConnector.MySqlConnection InnerInstance
+        {
+            get
+            {
+                return instance;
+            }
+        }
+
+        public MySqlConnection(string connectionString)
+        {
+            instance = new MySqlConnector.MySqlConnection(connectionString);
+        }
+
+        public string ConnectionString
+        {
+            get
+            {
+                return instance.ConnectionString;
+            }
+            set
+            {
+                instance.ConnectionString = value;
+            }
+        }
+
+        public int ConnectionTimeout
+        {
+            get
+            {
+                return instance.ConnectionTimeout;
+            }
+        }
+
+        public string Database
+        {
+            get
+            {
+                return instance.Database;
+            }
+        }
+
+        public ConnectionState State
+        {
+            get
+            {
+                return instance.State;
+            }
+        }
+
+        public IDbTransaction BeginTransaction()
+        {
+            return instance.BeginTransaction();
+        }
+
+        public IDbTransaction BeginTransaction(IsolationLevel il)
+        {
+            return instance.BeginTransaction(il);
+        }
+
+        public void ChangeDatabase(string databaseName)
+        {
+            instance.ChangeDatabase(databaseName);
+        }
+
+        public object Clone()
+        {
+            return ((ICloneable)instance).Clone();
+        }
+
+        public void Close()
+        {
+            instance.Close();
+        }
+
+        public IDbCommand CreateCommand()
+        {
+            return instance.CreateCommand();
+        }
+
+        public void Dispose()
+        {
+            instance.Dispose();
+        }
+
+        public void Open()
+        {
+            instance.Open();
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlConnectionStringBuilder.cs b/Rds/Implem.MySql/MySqlConnectionStringBuilder.cs
new file mode 100644
index 000000000..afacefe8f
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlConnectionStringBuilder.cs
@@ -0,0 +1,45 @@
+using Implem.IRds;
+namespace Implem.MySql
+{
+    internal class MySqlConnectionStringBuilder : ISqlConnectionStringBuilder
+    {
+        private MySqlConnector.MySqlConnectionStringBuilder instance;
+
+        internal MySqlConnector.MySqlConnectionStringBuilder InnerInstance
+        {
+            get
+            {
+                return instance;
+            }
+        }
+
+        public string ConnectionString
+        {
+            get
+            {
+                return instance.ConnectionString;
+            }
+            set
+            {
+                instance.ConnectionString = value;
+            }
+        }
+
+        public string InitialCatalog
+        {
+            get
+            {
+                return instance.Database;
+            }
+            set
+            {
+                instance.Database = value; ;
+            }
+        }
+
+        public MySqlConnectionStringBuilder(string connectionString)
+        {
+            instance = new MySqlConnector.MySqlConnectionStringBuilder(connectionString);
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlDataAdapter.cs b/Rds/Implem.MySql/MySqlDataAdapter.cs
new file mode 100644
index 000000000..3bea29f3b
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlDataAdapter.cs
@@ -0,0 +1,126 @@
+using Implem.IRds;
+using System;
+using System.Data;
+namespace Implem.MySql
+{
+    internal class MySqlDataAdapter : ISqlDataAdapter
+    {
+        private MySqlConnector.MySqlDataAdapter instance;
+
+        public MySqlDataAdapter(ISqlCommand sqlCommand)
+        {
+            instance = new MySqlConnector.MySqlDataAdapter(
+                selectCommand: ((MySqlCommand)sqlCommand).InnerInstance);
+        }
+
+        public IDbCommand DeleteCommand
+        {
+            get
+            {
+                return instance.DeleteCommand;
+            }
+            set
+            {
+                instance.DeleteCommand = (MySqlConnector.MySqlCommand)value;
+            }
+        }
+
+        public IDbCommand InsertCommand
+        {
+            get
+            {
+                return instance.InsertCommand;
+            }
+            set
+            {
+                instance.InsertCommand = (MySqlConnector.MySqlCommand)value;
+            }
+        }
+
+        public IDbCommand SelectCommand
+        {
+            get
+            {
+                return instance.SelectCommand;
+            }
+            set
+            {
+                instance.SelectCommand = (MySqlConnector.MySqlCommand)value;
+            }
+        }
+
+        public IDbCommand UpdateCommand
+        {
+            get
+            {
+                return instance.UpdateCommand;
+            }
+            set
+            {
+                instance.UpdateCommand = (MySqlConnector.MySqlCommand)value;
+            }
+        }
+
+        public MissingMappingAction MissingMappingAction
+        {
+            get
+            {
+                return instance.MissingMappingAction;
+            }
+            set
+            {
+                instance.MissingMappingAction = value;
+            }
+        }
+
+        public MissingSchemaAction MissingSchemaAction
+        {
+            get
+            {
+                return instance.MissingSchemaAction;
+            }
+            set
+            {
+                instance.MissingSchemaAction = value;
+            }
+        }
+
+        public ITableMappingCollection TableMappings
+        {
+            get
+            {
+                return instance.TableMappings;
+            }
+        }
+
+        public object Clone()
+        {
+            return ((ICloneable)instance).Clone();
+        }
+
+        public void Fill(DataTable dataTable)
+        {
+            instance.Fill(dataTable);
+        }
+
+        public int Fill(DataSet dataSet)
+        {
+            return instance.Fill(dataSet);
+        }
+
+        public DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType)
+        {
+            throw new NotImplementedException();
+        }
+
+        public IDataParameter[] GetFillParameters()
+        {
+            return instance.GetFillParameters();
+        }
+
+        public int Update(DataSet dataSet)
+        {
+            return instance.Update(dataSet);
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlDataTypes.cs b/Rds/Implem.MySql/MySqlDataTypes.cs
new file mode 100644
index 000000000..5b62fe01d
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlDataTypes.cs
@@ -0,0 +1,46 @@
+using Implem.IRds;
+using System.Data;
+namespace Implem.MySql
+{
+    internal class MySqlDataType : ISqlDataType
+    {
+        public string Convert(string name)
+        {
+            return name
+                .Replace("nchar", "char")
+                .Replace("nvarchar(max)", "longtext")
+                .Replace("nvarchar", "varchar")
+                .Replace("bit", "tinyint(1)")
+                .Replace("image", "longblob")
+                .Replace("datetime", "datetime(3)");
+        }
+
+        public string ConvertBack(string name)
+        {
+            return name == "char"
+                ? "nchar"
+                : name
+                    .Replace("varchar", "nvarchar")
+                    .Replace("longtext", "nvarchar")
+                    .Replace("text", "nvarchar")
+                    .Replace("tinyint", "bit")
+                    .Replace("longblob", "image");
+        }
+
+        public string DefaultDefinition(DataRow dataRow)
+        {
+            switch (dataRow["data_type"].ToString())
+            {
+                case "char":
+                case "varchar":
+                case "text":
+                case "longtext":
+                    return "'" + dataRow["column_default"].ToString() + "'";
+                case "decimal":
+                    return dataRow["column_default"].ToString().TrimEnd('0').TrimEnd('.'); ;
+                default:
+                    return dataRow["column_default"].ToString();
+            }
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlDefinitionSetting.cs b/Rds/Implem.MySql/MySqlDefinitionSetting.cs
new file mode 100644
index 000000000..c81605d6a
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlDefinitionSetting.cs
@@ -0,0 +1,11 @@
+namespace Implem.IRds
+{
+    internal class MySqlDefinitionSetting : ISqlDefinitionSetting
+    {
+        public int IdentifierPostfixLength { get; } = 32;
+        public int NationalCharacterStoredSizeCoefficient { get; } = 4;
+        public int ReducedVarcharLength { get; } = 760;
+        public string SchemaName { get => ""; set => _ = value; }
+        public bool IsCreatingDb { get => false; set => _ = value; }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlErrors.cs b/Rds/Implem.MySql/MySqlErrors.cs
new file mode 100644
index 000000000..12a34a051
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlErrors.cs
@@ -0,0 +1,18 @@
+using Implem.IRds;
+using Implem.Libraries.Utilities;
+using MySqlConnector;
+using System.Data.Common;
+namespace Implem.MySql
+{
+    internal class MySqlErrors : ISqlErrors
+    {
+        public int ErrorCodeDuplicateKey { get; } = 23000;
+        public int ErrorCodeDuplicatePk { get; } = 23000;
+        public int ErrorCodeDeadLocked { get; } = 40001;
+
+        public int ErrorCode(DbException dbException)
+        {
+            return ((MySqlException)dbException).SqlState.ToInt();
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlObjectFactory.cs b/Rds/Implem.MySql/MySqlObjectFactory.cs
new file mode 100644
index 000000000..eb40300cd
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlObjectFactory.cs
@@ -0,0 +1,91 @@
+using Implem.IRds;
+namespace Implem.MySql
+{
+    public class MySqlObjectFactory : ISqlObjectFactory
+    {
+        private static ISqlErrors sqlErrors = new MySqlErrors();
+        private static ISqls sqls = new MySqlSqls();
+        private static ISqlCommandText sqlCommandText = new MySqlCommandText();
+        private static ISqlResult sqlResult = new MySqlResult();
+        private static ISqlDataType sqlDataTypes = new MySqlDataType();
+        private static ISqlDefinitionSetting sqlDefinitionSetting = new MySqlDefinitionSetting();
+
+        public ISqlErrors SqlErrors
+        {
+            get
+            {
+                return sqlErrors;
+            }
+        }
+
+        public ISqlCommand CreateSqlCommand()
+        {
+            return new MySqlCommand();
+        }
+
+        public ISqlConnection CreateSqlConnection(string connectionString)
+        {
+            return new MySqlConnection(connectionString);
+        }
+
+        public ISqlConnectionStringBuilder CreateSqlConnectionStringBuilder(string connectionString)
+        {
+            return new MySqlConnectionStringBuilder(connectionString);
+        }
+
+        public ISqlDataAdapter CreateSqlDataAdapter(ISqlCommand sqlCommand)
+        {
+            return new MySqlDataAdapter(sqlCommand);
+        }
+
+        public ISqlParameter CreateSqlParameter()
+        {
+            return new MySqlParameter();
+        }
+
+        public ISqlParameter CreateSqlParameter(string name, object value)
+        {
+            return new MySqlParameter(name, value);
+        }
+
+        public ISqls Sqls
+        {
+            get
+            {
+                return sqls;
+            }
+        }
+
+        public ISqlCommandText SqlCommandText
+        {
+            get
+            {
+                return sqlCommandText;
+            }
+        }
+
+        public ISqlResult SqlResult
+        {
+            get
+            {
+                return sqlResult;
+            }
+        }
+
+        public ISqlDataType SqlDataType
+        {
+            get
+            {
+                return sqlDataTypes;
+            }
+        }
+
+        public ISqlDefinitionSetting SqlDefinitionSetting
+        {
+            get
+            {
+                return sqlDefinitionSetting;
+            }
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlParameter.cs b/Rds/Implem.MySql/MySqlParameter.cs
new file mode 100644
index 000000000..0b9976a09
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlParameter.cs
@@ -0,0 +1,163 @@
+using Implem.IRds;
+using System.Data;
+namespace Implem.MySql
+{
+    internal class MySqlParameter : ISqlParameter
+    {
+        private MySqlConnector.MySqlParameter instance;
+
+        internal MySqlParameter()
+        {
+            instance = new MySqlConnector.MySqlParameter();
+        }
+
+        internal MySqlParameter(string parameterName, object value)
+        {
+            if (value is System.Enum)
+            {
+                value = (int)value;
+            }
+            instance = new MySqlConnector.MySqlParameter(parameterName, value);
+        }
+
+        internal MySqlParameter(MySqlConnector.MySqlParameter parameter)
+        {
+            if (parameter?.Value is System.Enum)
+            {
+                parameter.Value = (int)parameter.Value;
+            }
+            instance = parameter;
+        }
+
+        public string SqlDbType
+        {
+            get
+            {
+                try
+                {
+                    return instance.MySqlDbType.ToString();
+                }
+                catch
+                {
+                }
+                return string.Empty;
+            }
+        }
+
+        public byte Precision
+        {
+            get
+            {
+                return instance.Precision;
+            }
+            set
+            {
+                instance.Precision = value;
+            }
+        }
+
+        public byte Scale
+        {
+            get
+            {
+                return instance.Scale;
+            }
+            set
+            {
+                instance.Scale = value;
+            }
+        }
+
+        public int Size
+        {
+            get
+            {
+                return instance.Size;
+            }
+            set
+            {
+                instance.Size = value;
+            }
+        }
+
+        public DbType DbType
+        {
+            get
+            {
+                return instance.DbType;
+            }
+            set
+            {
+                instance.DbType = value;
+            }
+        }
+
+        public ParameterDirection Direction
+        {
+            get
+            {
+                return instance.Direction;
+            }
+            set
+            {
+                instance.Direction = value;
+            }
+        }
+
+        public bool IsNullable
+        {
+            get
+            {
+                return instance.IsNullable;
+            }
+        }
+
+        public string ParameterName
+        {
+            get
+            {
+                return instance.ParameterName;
+            }
+            set
+            {
+                instance.ParameterName = value;
+            }
+        }
+
+        public string SourceColumn
+        {
+            get
+            {
+                return instance.SourceColumn;
+            }
+            set
+            {
+                instance.SourceColumn = value;
+            }
+        }
+
+        public DataRowVersion SourceVersion
+        {
+            get
+            {
+                return instance.SourceVersion;
+            }
+            set
+            {
+                instance.SourceVersion = value;
+            }
+        }
+
+        public object Value
+        {
+            get
+            {
+                return instance.Value;
+            }
+            set
+            {
+                instance.Value = value;
+            }
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlResult.cs b/Rds/Implem.MySql/MySqlResult.cs
new file mode 100644
index 000000000..8b6d57c50
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlResult.cs
@@ -0,0 +1,19 @@
+using Implem.IRds;
+using Implem.Libraries.Utilities;
+using System.Data;
+using System.Linq;
+namespace Implem.MySql
+{
+    internal class MySqlResult : ISqlResult
+    {
+        public int DeleteCount(DataTable data)
+        {
+            return data?.AsEnumerable().FirstOrDefault()?.Field<long>(0).ToInt() ?? 0;
+        }
+
+        public int RestoreCount(DataTable data)
+        {
+            return data?.AsEnumerable().FirstOrDefault()?.Field<long>(0).ToInt() ?? 0;
+        }
+    }
+}
diff --git a/Rds/Implem.MySql/MySqlSqls.cs b/Rds/Implem.MySql/MySqlSqls.cs
new file mode 100644
index 000000000..327086f38
--- /dev/null
+++ b/Rds/Implem.MySql/MySqlSqls.cs
@@ -0,0 +1,497 @@
+using Implem.IRds;
+using Implem.Libraries.Utilities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Implem.MySql
+{
+    internal class MySqlSqls : ISqls
+    {
+        public string TrueString { get; } = "1";
+
+        public string FalseString { get; } = "0";
+
+        public string IsNotTrue { get; } = " <> 1 ";
+
+        public string CurrentDateTime { get; } = " CURRENT_TIMESTAMP(3) ";
+
+        public string Like { get; } = " like ";
+
+        public string NotLike { get; } = " not like ";
+
+        public string LikeWithEscape { get; } = " like {0} escape '|'";
+
+        public string NotLikeWithEscape { get; } = " not like {0} escape '|'";
+
+        public string Escape { get; } = " escape '|'";
+
+        public string EscapeValue(string value)
+        {
+            return value?
+                .Replace("|", "||")
+                .Replace("_", "|_")
+                .Replace("%", "|%");
+        }
+
+        public string IsNull { get; } = "ifnull";
+
+        public string WhereLikeTemplateForward { get; } = "'%' || ";
+
+        public string WhereLikeTemplate { get; } = "#ParamCount#_#CommandCount# || '%'";
+
+        public string GenerateIdentity { get; } = string.Empty;
+
+        public object DateTimeValue(object value)
+        {
+            return value;
+        }
+
+        public string BooleanString(string bit)
+        {
+            return bit == "1" ? TrueString : FalseString;
+        }
+
+        public string IntegerColumnLike(string tableName, string columnName)
+        {
+            return $@"(cast(""{tableName}"".""{columnName}"" as char) like ";
+        }
+
+        public string DateAddDay(int day, string columnBracket)
+        {
+            return $"date_add({columnBracket},interval {day} day)";
+        }
+
+        public string DateAddHour(int hour, string columnBracket)
+        {
+            return $"date_add({columnBracket},interval {hour} hour)";
+        }
+
+        public string DateGroupYearly { get; } = "date_format({0}, '%Y')";
+
+        public string DateGroupMonthly { get; } = "date_format({0}, '%Y/%m')";
+
+        public string DateGroupWeeklyPart { get; } = "case weekday({0}) when 6 then date_add({0},interval -6 day) else date_add({0},interval (0-weekday({0})) day) end";
+
+        public string DateGroupWeekly { get; } = "yearweek({0}, 3)";
+
+        public string DateGroupDaily { get; } = "date_format({0}, '%Y/%m/%d')";
+
+        public string GetPermissions { get; } = @"
+            select distinct
+                ""Sites"".""SiteId"" as ""ReferenceId"",
+                ""Permissions"".""PermissionType"" 
+            from ""Sites""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Sites"".""InheritPermission""
+                inner join ""Depts"" on ""Permissions"".""DeptId""=""Depts"".""DeptId""
+            where ""Sites"".""TenantId""=@ipT
+                and ""Depts"".""DeptId""=@ipD
+                and ""Depts"".""Disabled""=0
+            union all
+            select distinct
+                ""Sites"".""SiteId"" as ""ReferenceId"",
+                ""Permissions"".""PermissionType"" 
+            from ""Sites""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Sites"".""InheritPermission""
+                inner join ""Groups"" on ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                inner join ""Depts"" on ""GroupMembers"".""DeptId""=""Depts"".""DeptId""
+            where ""Sites"".""TenantId""=@ipT
+                and ""Groups"".""Disabled""=0
+                and ""Depts"".""DeptId""=@ipD
+                and ""Depts"".""Disabled""=0
+            union all
+            select distinct
+                ""Sites"".""SiteId"" as ""ReferenceId"",
+                ""Permissions"".""PermissionType"" 
+            from ""Sites""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Sites"".""InheritPermission""
+                inner join ""Groups"" on ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                inner join ""Users"" on ""GroupMembers"".""UserId""=""Users"".""UserId""
+            where ""Sites"".""TenantId""=@ipT
+                and ""Groups"".""Disabled""=0
+                and ""Users"".""UserId""=@ipU
+                and ""Users"".""Disabled""=0
+            union all
+            select distinct
+                ""Sites"".""SiteId"" as ""ReferenceId"",
+                ""Permissions"".""PermissionType""
+            from ""Sites""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Sites"".""InheritPermission""
+            where ""Sites"".""TenantId""=@ipT
+                and ""Permissions"".""UserId"" > 0
+                and ""Permissions"".""UserId""=@ipU
+            union all
+            select distinct
+                ""Sites"".""SiteId"" as ""ReferenceId"",
+                ""Permissions"".""PermissionType""
+            from ""Sites""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Sites"".""InheritPermission""
+            where ""Sites"".""TenantId""=@ipT
+                and ""Permissions"".""UserId""=-1";
+
+        public string GetPermissionsById { get; } = @"
+            union all
+            select distinct
+                ""Items"".""ReferenceId"",
+                ""Permissions"".""PermissionType"" 
+            from ""Items""
+                inner join ""Sites"" on ""Items"".""SiteId""=""Sites"".""SiteId""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Items"".""ReferenceId""
+                inner join ""Depts"" on ""Permissions"".""DeptId""=""Depts"".""DeptId""
+            where ""Items"".""ReferenceId""=@ReferenceId
+                and ""Sites"".""TenantId""=@ipT
+                and ""Depts"".""DeptId""=@ipD
+                and ""Depts"".""Disabled""=0
+            union all
+            select distinct
+                ""Items"".""ReferenceId"",
+                ""Permissions"".""PermissionType"" 
+            from ""Items""
+                inner join ""Sites"" on ""Items"".""SiteId""=""Sites"".""SiteId""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Items"".""ReferenceId""
+                inner join ""Groups"" on ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                inner join ""Depts"" on ""GroupMembers"".""DeptId""=""Depts"".""DeptId""
+            where ""Items"".""ReferenceId""=@ReferenceId
+                and ""Sites"".""TenantId""=@ipT
+                and ""Groups"".""Disabled""=0
+                and ""Depts"".""DeptId""=@ipD
+                and ""Depts"".""Disabled""=0
+            union all
+            select distinct
+                ""Items"".""ReferenceId"",
+                ""Permissions"".""PermissionType"" 
+            from ""Items""
+                inner join ""Sites"" on ""Items"".""SiteId""=""Sites"".""SiteId""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Items"".""ReferenceId""
+                inner join ""Groups"" on ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                inner join ""Users"" on ""GroupMembers"".""UserId""=""Users"".""UserId""
+            where ""Items"".""ReferenceId""=@ReferenceId
+                and ""Sites"".""TenantId""=@ipT
+                and ""Groups"".""Disabled""=0
+                and ""Users"".""UserId""=@ipU
+                and ""Users"".""Disabled""=0
+            union all
+            select distinct
+                ""Items"".""ReferenceId"",
+                ""Permissions"".""PermissionType""
+            from ""Items""
+                inner join ""Sites"" on ""Items"".""SiteId""=""Sites"".""SiteId""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Items"".""ReferenceId""
+            where ""Items"".""ReferenceId""=@ReferenceId
+                and ""Sites"".""TenantId""=@ipT
+                and ""Permissions"".""UserId"" > 0
+                and ""Permissions"".""UserId""=@ipU
+            union all
+            select distinct
+                ""Items"".""ReferenceId"",
+                ""Permissions"".""PermissionType""
+            from ""Items""
+                inner join ""Sites"" on ""Items"".""SiteId""=""Sites"".""SiteId""
+                inner join ""Permissions"" on ""Permissions"".""ReferenceId""=""Items"".""ReferenceId""
+            where ""Items"".""ReferenceId""=@ReferenceId
+                and ""Sites"".""TenantId""=@ipT
+                and ""Permissions"".""UserId""=-1;";
+
+        public string GetGroup { get; } = @"
+            select ""Groups"".""GroupId"" 
+            from ""Groups"" as ""Groups""
+                inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                inner join ""Depts"" on ""GroupMembers"".""DeptId""=""Depts"".""DeptId""
+            where ""Depts"".""TenantId""=@ipT
+                and ""Depts"".""DeptId""=@ipD
+            union all
+            select ""Groups"".""GroupId"" 
+            from ""Groups"" as ""Groups""
+                inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                inner join ""Users"" on ""GroupMembers"".""UserId""=""Users"".""UserId""
+            where ""Users"".""TenantId""=@ipT
+                and ""Users"".""UserId""=@ipU;";
+
+        public string GetEnabledGroup { get; } = @"
+            select ""Groups"".""GroupId"" 
+            from ""Groups"" as ""Groups""
+                inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                inner join ""Depts"" on ""GroupMembers"".""DeptId""=""Depts"".""DeptId""
+            where ""Groups"".""Disabled""=0
+                and ""Depts"".""TenantId""=@ipT
+                and ""Depts"".""DeptId""=@ipD
+                and ""Depts"".""Disabled""=0
+            union all
+            select ""Groups"".""GroupId"" 
+            from ""Groups"" as ""Groups""
+                inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                inner join ""Users"" on ""GroupMembers"".""UserId""=""Users"".""UserId""
+            where ""Groups"".""Disabled""=0
+                and ""Users"".""TenantId""=@ipT
+                and ""Users"".""UserId""=@ipU;";
+
+        public string PermissionsWhere { get; } = @"
+            (
+                exists
+                (
+                    select ""Depts"".""DeptId"" as ""Id""
+                    from ""Depts""
+                    where ""Depts"".""TenantId""=@ipT
+                        and ""Depts"".""DeptId""=@ipD
+                        and ""Depts"".""Disabled""=0
+                        and ""Permissions"".""DeptId""=""Depts"".""DeptId""
+                        and @ipD<>0
+                    union all
+                    select ""Groups"".""GroupId"" as ""Id""
+                    from ""Groups"" inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                    where ""Groups"".""TenantId""=@ipT
+                        and ""Groups"".""Disabled""=0
+                        and ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                        and exists
+                        (
+                            select ""DeptId""
+                            from ""Depts""
+                            where ""Depts"".""TenantId""=@ipT
+                                and ""Depts"".""DeptId""=@ipD
+                                and ""Depts"".""Disabled""=0
+                                and ""GroupMembers"".""DeptId""=""Depts"".""DeptId""
+                                and @ipD<>0
+                        )
+                    union all
+                    select ""Groups"".""GroupId"" as ""Id""
+                    from ""Groups"" inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                    where ""Groups"".""TenantId""=@ipT
+                        and ""Groups"".""Disabled""=0
+                        and ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                        and ""GroupMembers"".""UserId""=@ipU
+                        and @ipU<>0
+                    union all
+                    select ""P"".""UserId"" as ""Id""
+                    from ""Permissions"" as ""P""
+                    where ""P"".""ReferenceId""=""Permissions"".""ReferenceId""
+                        and ""P"".""UserId""=""Permissions"".""UserId""
+                        and ""P"".""UserId""=@ipU
+                        and @ipU<>0
+                    union all
+                    select ""P"".""UserId"" as ""Id""
+                    from ""Permissions"" as ""P""
+                    where ""P"".""ReferenceId""=""Permissions"".""ReferenceId""
+                        and ""P"".""UserId""=-1
+                )
+            )";
+
+        public string SiteDeptWhere { get; } = @"
+            (
+                exists
+                (
+                    select *
+                    from ""Permissions""
+                        left outer join ""Depts"" on ""Permissions"".""DeptId""=""Depts"".""DeptId""
+                        left outer join ""Groups"" on ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                        left outer join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                        left outer join ""Depts"" as ""GroupMemberDepts"" on ""GroupMembers"".""DeptId""=""GroupMemberDepts"".""DeptId""
+                    where
+                        ""Permissions"".""ReferenceId""={0}
+                        and
+                        (
+                            (
+                                ""Depts"".""Disabled""=0
+                                and ""Depts"".""DeptId""=""Depts"".""DeptId""
+                            )
+                            or 
+                            (
+                                ""Groups"".""Disabled""=0 and 
+                                (
+                                    (
+                                        ""GroupMemberDepts"".""Disabled""=0
+                                        and ""GroupMemberDepts"".""DeptId""=""Depts"".""DeptId""
+                                    )
+                                )
+                            )
+                        )
+                )
+            )";
+
+        public string SiteGroupWhere { get; } = @"
+            (
+                exists
+                (
+                    select *
+                    from ""Permissions""
+                    where
+                        ""Permissions"".""ReferenceId""={0}
+                        and ""Groups"".""Disabled""=0
+                        and ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                        and ""Groups"".""GroupId"">0
+                )
+            )";
+
+        public string SiteUserWhere { get; } = @"
+            (
+                ""Users"".""UserId"" in
+                (
+                    select ""Users"".""UserId""
+                    from ""Permissions""
+                        inner join ""Depts"" as ""PermissionDepts"" on ""Permissions"".""DeptId""=""PermissionDepts"".""DeptId""
+                        inner join ""Users"" as ""PermissionUsers"" on ""PermissionDepts"".""DeptId""=""PermissionUsers"".""DeptId""
+                        inner join ""Users"" on ""PermissionUsers"".""UserId"" = ""Users"".""UserId""
+                    where
+                        ""Permissions"".""ReferenceId""={0}
+                        and ""PermissionDepts"".""Disabled""=0
+                        and ""PermissionUsers"".""Disabled""=0
+                    union all
+                    select ""Users"".""UserId""
+                    from ""Permissions""
+                        inner join ""Groups"" on ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                        inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                        inner join ""Depts"" as ""GroupMemberDepts"" on ""GroupMembers"".""DeptId""=""GroupMemberDepts"".""DeptId""
+                        inner join ""Users"" as ""GroupMemberUsers"" on ""GroupMemberDepts"".""DeptId""=""GroupMemberUsers"".""DeptId""
+                        inner join ""Users"" on ""GroupMemberUsers"".""UserId"" = ""Users"".""UserId""
+                    where
+                        ""Permissions"".""ReferenceId""={0}
+                        and ""Groups"".""Disabled""=0
+                        and ""GroupMemberDepts"".""Disabled""=0
+                        and ""GroupMemberUsers"".""Disabled""=0
+                    union all
+                    select ""Users"".""UserId""
+                    from ""Permissions""
+                        inner join ""Groups"" on ""Permissions"".""GroupId""=""Groups"".""GroupId""
+                        inner join ""GroupMembers"" on ""Groups"".""GroupId""=""GroupMembers"".""GroupId""
+                        inner join ""Users"" as ""GroupMemberUsers"" on ""GroupMembers"".""UserId""=""GroupMemberUsers"".""UserId""
+                        inner join ""Users"" on ""GroupMemberUsers"".""UserId"" = ""Users"".""UserId""
+                    where
+                        ""Permissions"".""ReferenceId""={0}
+                        and ""Groups"".""Disabled""=0
+                        and ""GroupMemberUsers"".""Disabled""=0
+                    union all
+                    select ""Users"".""UserId""
+                    from ""Permissions""
+                        inner join ""Users"" as ""PermissionUsers"" on ""Permissions"".""UserId""=""PermissionUsers"".""UserId""
+                        inner join ""Users"" on ""Users"".""Disabled""=0
+                    where
+                        ""Permissions"".""ReferenceId""={0}
+                        and ""PermissionUsers"".""UserId""=""Users"".""UserId""
+                        and ""PermissionUsers"".""Disabled""=0
+                )
+            )";
+
+        public string SitePermissionsWhere { get; } = @"
+            (
+                exists
+                (
+                    select ""Permissions"".""ReferenceId""
+                    from ""Permissions""
+                    where
+                        ""Permissions"".""ReferenceId""={0}
+                        and ""Permissions"".""UserId""=-1
+                )
+            )";
+
+        public string IntegratedSitesPermissionsWhere(string tableName, List<long> sites)
+        {
+            return $@"
+                ""{tableName}_Items"".""SiteId"" in ({sites.Join()})
+                and exists(
+                    select ""Permissions"".""ReferenceId""
+                    from ""Permissions""
+                    where ""Permissions"".""ReferenceId""=
+                        (
+                            select ""Sites"".""InheritPermission""
+                            from ""Sites""
+                            where ""Sites"".""SiteId""=""{tableName}_Items"".""SiteId""
+                        )
+                        and ""Permissions"".""PermissionType"" & 1 = 1
+                        and {PermissionsWhere}
+                    union
+                    select ""Permissions"".""ReferenceId""
+                    from ""Permissions""
+                    where ""Permissions"".""ReferenceId""=""{tableName}_Items"".""ReferenceId""
+                        and ""Permissions"".""PermissionType"" & 1 = 1
+                        and {PermissionsWhere}
+                )";
+        }
+
+        public string UpsertBinary { get; } = @"
+            update ""Binaries""
+            set
+                ""Bin"" =
+                    (
+                    select ""subbin"".""Bin""
+                    from
+                        (
+                        select ""Bin""
+                        from ""Binaries""
+                        where ""TenantId"" = @ipT
+                            and ""Guid"" = @Guid
+                            and ""BinaryType"" = @BinaryType
+                        )
+                        as ""subbin""
+                    ) || @Bin
+                ,""Updator"" = @ipU
+                ,""UpdatedTime"" = current_timestamp(3)
+            where ""Binaries"".""TenantId"" = @ipT
+                and ""Binaries"".""Guid"" = @Guid
+                and ""Binaries"".""BinaryType"" = @BinaryType;
+            insert into ""Binaries""
+            (
+                ""TenantId""
+                ,""ReferenceId""
+                ,""Guid""
+                ,""Ver""
+                ,""BinaryType""
+                ,""Title""
+                ,""Bin""
+                ,""FileName""
+                ,""Creator""
+                ,""Updator""
+                ,""CreatedTime""
+                ,""UpdatedTime""
+            )
+            select *
+            from
+            (
+                select
+                    @ipT as ""TenantId""
+                    ,@ReferenceId as ""ReferenceId""
+                    ,@Guid as ""Guid""
+                    ,1 as ""Ver""
+                    ,@BinaryType as ""BinaryType""
+                    ,@Title as ""Title""
+                    ,@Bin as ""Bin""
+                    ,@FileName as ""FileName""
+                    ,@ipU as ""Creator""
+                    ,@ipU as ""Updator""
+                    ,current_timestamp(3) as ""CreatedTime""
+                    ,current_timestamp(3) as ""UpdatedTime""
+            )
+            as tmp
+            where not exists
+            (
+                select 1
+                from ""Binaries""
+                where ""Binaries"".""TenantId"" = @ipT
+                    and ""Binaries"".""Guid"" = @Guid
+                    and ""Binaries"".""BinaryType"" = @BinaryType
+            );";
+
+        public string GetBinaryHash(string algorithm)
+        {
+            switch (algorithm)
+            {
+                case "md5":
+                    return @"
+                        select unhex(md5(""Bin""))
+                        from ""Binaries""
+                        where ""TenantId"" = @ipT
+                            and ""Guid"" = @Guid;";
+                case "sha256":
+                    return @"
+                        select unhex(sha2(""Bin"",256))
+                        from ""Binaries""
+                        where ""TenantId"" = @ipT
+                            and ""Guid"" = @Guid;";
+                default:
+                    return string.Empty;
+            }
+        }
+    }
+}
diff --git a/Rds/Implem.PostgreSql/Implem.PostgreSql.csproj b/Rds/Implem.PostgreSql/Implem.PostgreSql.csproj
index feaf149c9..45a90a143 100644
--- a/Rds/Implem.PostgreSql/Implem.PostgreSql.csproj
+++ b/Rds/Implem.PostgreSql/Implem.PostgreSql.csproj
@@ -3,14 +3,14 @@
   <PropertyGroup>
     <TargetFramework>net8.0</TargetFramework>
     <Copyright>Copyright © Implem Inc 2014 - 2024</Copyright>
-    <AssemblyVersion>1.4.8.1</AssemblyVersion>
-    <FileVersion>1.4.8.1</FileVersion>
-    <Version>1.4.8.1</Version>
+    <AssemblyVersion>1.4.9.0</AssemblyVersion>
+    <FileVersion>1.4.9.0</FileVersion>
+    <Version>1.4.9.0</Version>
     <Nullable>disable</Nullable>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Npgsql" Version="8.0.3" />
+    <PackageReference Include="Npgsql" Version="8.0.4" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/Rds/Implem.PostgreSql/PostgreSqlCommandText.cs b/Rds/Implem.PostgreSql/PostgreSqlCommandText.cs
index a5ee4ee59..f0fa4108d 100644
--- a/Rds/Implem.PostgreSql/PostgreSqlCommandText.cs
+++ b/Rds/Implem.PostgreSql/PostgreSqlCommandText.cs
@@ -1,4 +1,5 @@
-using Implem.IRds;
+using Implem.DefinitionAccessor;
+using Implem.IRds;
 using Implem.Libraries.Utilities;
 using System;
 using System.Collections.Generic;
@@ -7,6 +8,11 @@ namespace Implem.PostgreSql
 {
     internal class PostgreSqlCommandText : ISqlCommandText
     {
+        public string BeforeAllCommand()
+        {
+            return string.Empty;
+        }
+
         public string CreateDelete(string template)
         {
             return template + " RETURNING * ";
@@ -60,7 +66,8 @@ public string CreateUpdateOrInsert(
             string setClause,
             Action<StringBuilder> sqlWhereAppender,
             string intoClause,
-            string valueClause)
+            string valueClause,
+            string selectClauseForMySql)
         {
             var commandText = new StringBuilder();
 
@@ -109,5 +116,14 @@ public Dictionary<string,string> CreateSearchTextWords(
         {
             return new Dictionary<string, string> { [Strings.NewGuid()] = searchText };
         }
+
+        public string CreateDataRangeCommand(int? commandCount)
+        {
+            return $"offset {Parameters.Parameter.SqlParameterPrefix}Offset" +
+                commandCount.ToString() +
+                $" rows fetch next {Parameters.Parameter.SqlParameterPrefix}PageSize" +
+                commandCount.ToString() +
+                " rows only ";
+        }
     }
 }
diff --git a/Rds/Implem.PostgreSql/PostgreSqlDataTypes.cs b/Rds/Implem.PostgreSql/PostgreSqlDataTypes.cs
index 51aa10f62..4f5c03b53 100644
--- a/Rds/Implem.PostgreSql/PostgreSqlDataTypes.cs
+++ b/Rds/Implem.PostgreSql/PostgreSqlDataTypes.cs
@@ -1,4 +1,5 @@
 using Implem.IRds;
+using System.Data;
 using System.Text.RegularExpressions;
 namespace Implem.PostgreSql
 {
@@ -30,9 +31,9 @@ public string ConvertBack(string name)
                 .Replace("timestamp", "datetime");
         }
 
-        public string DefaultDefinition(object dbRawValue)
+        public string DefaultDefinition(DataRow dataRow)
         {
-            string s = dbRawValue.ToString();
+            string s = dataRow["column_default"].ToString();
             s = Regex.Replace(s, @"^(?<str>'.+')::.+$", "${str}");
             return s;
         }
diff --git a/Rds/Implem.PostgreSql/PostgreSqlDefinitionSetting.cs b/Rds/Implem.PostgreSql/PostgreSqlDefinitionSetting.cs
index 150c69212..6e95cdc2d 100644
--- a/Rds/Implem.PostgreSql/PostgreSqlDefinitionSetting.cs
+++ b/Rds/Implem.PostgreSql/PostgreSqlDefinitionSetting.cs
@@ -6,6 +6,7 @@ internal class PostgreSqlDefinitionSetting : ISqlDefinitionSetting
         private bool isCreatingDb = false;
         public int IdentifierPostfixLength { get; } = 32;
         public int NationalCharacterStoredSizeCoefficient { get; } = 4;
+        public int ReducedVarcharLength { get; }
         public string SchemaName { get { return schemaName; } set { schemaName = value; } }
         public bool IsCreatingDb { get { return isCreatingDb; } set { isCreatingDb = value; } }
     }
diff --git a/Rds/Implem.PostgreSql/PostgreSqlSqls.cs b/Rds/Implem.PostgreSql/PostgreSqlSqls.cs
index 252fcfb5e..b73c00bf7 100644
--- a/Rds/Implem.PostgreSql/PostgreSqlSqls.cs
+++ b/Rds/Implem.PostgreSql/PostgreSqlSqls.cs
@@ -479,10 +479,13 @@ left join ""Binaries"" as ""Target""
                 and ""Target"".""BinaryType"" = ""Temp"".""BinaryType""
             where ""Target"".""Guid"" is null;";
 
-        public string GetBinaryHash { get; } = @"
-            select digest(""Bin"", @Algorithm)
-            from ""Binaries""
-            where ""TenantId"" = @ipT
-                and ""Guid"" = @Guid;";
+        public string GetBinaryHash(string algorithm)
+        {
+            return @"
+                select digest(""Bin"", @Algorithm)
+                from ""Binaries""
+                where ""TenantId"" = @ipT
+                    and ""Guid"" = @Guid;";
+        }
     }
 }
diff --git a/Rds/Implem.SqlServer/Implem.SqlServer.csproj b/Rds/Implem.SqlServer/Implem.SqlServer.csproj
index e7a89672f..ea0f2d5f6 100644
--- a/Rds/Implem.SqlServer/Implem.SqlServer.csproj
+++ b/Rds/Implem.SqlServer/Implem.SqlServer.csproj
@@ -3,9 +3,9 @@
   <PropertyGroup>
     <TargetFramework>net8.0</TargetFramework>
     <Copyright>Copyright © Implem Inc 2014 - 2024</Copyright>
-    <AssemblyVersion>1.4.8.1</AssemblyVersion>
-    <FileVersion>1.4.8.1</FileVersion>
-    <Version>1.4.8.1</Version>
+    <AssemblyVersion>1.4.9.0</AssemblyVersion>
+    <FileVersion>1.4.9.0</FileVersion>
+    <Version>1.4.9.0</Version>
     <Nullable>disable</Nullable>
   </PropertyGroup>
 
diff --git a/Rds/Implem.SqlServer/SqlServerCommandText.cs b/Rds/Implem.SqlServer/SqlServerCommandText.cs
index 4e664fcdb..44dfe4e24 100644
--- a/Rds/Implem.SqlServer/SqlServerCommandText.cs
+++ b/Rds/Implem.SqlServer/SqlServerCommandText.cs
@@ -1,4 +1,5 @@
-using Implem.IRds;
+using Implem.DefinitionAccessor;
+using Implem.IRds;
 using System;
 using System.Collections.Generic;
 using System.Text;
@@ -6,6 +7,11 @@ namespace Implem.SqlServer
 {
     internal class SqlServerCommandText : ISqlCommandText
     {
+        public string BeforeAllCommand()
+        {
+            return string.Empty;
+        }
+
         public string CreateDelete(string template)
         {
             return template + " ; select @@rowcount ";
@@ -56,7 +62,8 @@ public string CreateUpdateOrInsert(
             string setClause,
             Action<StringBuilder> sqlWhereAppender,
             string intoClause,
-            string valueClause)
+            string valueClause,
+            string selectClauseForMySql)
         {
             var commandText = new StringBuilder();
             commandText
@@ -97,5 +104,14 @@ public Dictionary<string,string> CreateSearchTextWords(
         {
             return words;
         }
+
+        public string CreateDataRangeCommand(int? commandCount)
+        {
+            return $"offset {Parameters.Parameter.SqlParameterPrefix}Offset" +
+                commandCount.ToString() +
+                $" rows fetch next {Parameters.Parameter.SqlParameterPrefix}PageSize" +
+                commandCount.ToString() +
+                " rows only ";
+        }
     }
 }
diff --git a/Rds/Implem.SqlServer/SqlServerDataTypes.cs b/Rds/Implem.SqlServer/SqlServerDataTypes.cs
index 31c693f11..048613ec5 100644
--- a/Rds/Implem.SqlServer/SqlServerDataTypes.cs
+++ b/Rds/Implem.SqlServer/SqlServerDataTypes.cs
@@ -1,4 +1,5 @@
 using Implem.IRds;
+using System.Data;
 using System.Text.RegularExpressions;
 
 namespace Implem.SqlServer
@@ -15,9 +16,9 @@ public string ConvertBack(string name)
             return name;
         }
 
-        public string DefaultDefinition(object dbRawValue)
+        public string DefaultDefinition(DataRow dataRow)
         {
-            string s = dbRawValue.ToString();
+            string s = dataRow["column_default"].ToString();
             s = Regex.Replace(s, @"^\(\((?<num>.+)\)\)$", "${num}");
             s = Regex.Replace(s, @"^\((?<str>'.+')\)$", "${str}");
             s = Regex.Replace(s, @"^\((?<other>.+)\)$", "${other}");
diff --git a/Rds/Implem.SqlServer/SqlServerDefinitionSetting.cs b/Rds/Implem.SqlServer/SqlServerDefinitionSetting.cs
index 712e2dc64..480f1bd70 100644
--- a/Rds/Implem.SqlServer/SqlServerDefinitionSetting.cs
+++ b/Rds/Implem.SqlServer/SqlServerDefinitionSetting.cs
@@ -4,6 +4,7 @@ internal class SqlServerDefinitionSetting : ISqlDefinitionSetting
     {
         public int IdentifierPostfixLength { get; } = 64;
         public int NationalCharacterStoredSizeCoefficient { get; } = 2;
+        public int ReducedVarcharLength { get; }
         public string SchemaName { get => ""; set => _ = value; }
         public bool IsCreatingDb { get => false; set => _ = value; }
     }
diff --git a/Rds/Implem.SqlServer/SqlServerSqls.cs b/Rds/Implem.SqlServer/SqlServerSqls.cs
index 94feee329..f98b1550a 100644
--- a/Rds/Implem.SqlServer/SqlServerSqls.cs
+++ b/Rds/Implem.SqlServer/SqlServerSqls.cs
@@ -466,10 +466,13 @@ when not matched
                     ,current_timestamp
                 );";
 
-        public string GetBinaryHash { get; } = @"
-            select hashbytes(@Algorithm, cast(""Bin"" as varbinary(max)))
-            from ""Binaries""
-            where ""TenantId"" = @_T
-                and ""Guid"" = @Guid;";
+        public string GetBinaryHash(string algorithm)
+        {
+            return @"
+                select hashbytes(@Algorithm, cast(""Bin"" as varbinary(max)))
+                from ""Binaries""
+                where ""TenantId"" = @_T
+                    and ""Guid"" = @Guid;";
+        }
     }
 }