{
  "schemaVersion": 20,
  "operationSchemaVersion": 4,
  "operations": [
    {
      "type": "savepoint",
      "name": "セーブポイント",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "stateCheck",
      "name": "条件・配置を検査",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "showCard",
      "name": "カードを拡大表示",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "openTab",
      "name": "タブを開く",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "gameEnd",
      "name": "ゲーム終了",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "reset",
      "name": "リセット",
      "modes": [
        [
          "game",
          "ゲーム全体"
        ],
        [
          "part",
          "指定した部品"
        ],
        [
          "global",
          "全体変数"
        ],
        [
          "player",
          "プレイヤー変数"
        ],
        [
          "team",
          "チーム変数"
        ],
        [
          "marker",
          "マーカー"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "objectVariable",
      "name": "カード・ピース変数を変更",
      "modes": [
        [
          "set",
          "設定"
        ],
        [
          "add",
          "加算"
        ],
        [
          "subtract",
          "減算"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "move",
      "name": "カード・ピース移動",
      "modes": [
        [
          "standard",
          "指定場所へ移動"
        ],
        [
          "recall",
          "元の山札／初期位置へ回収"
        ],
        [
          "box-cycle",
          "ボックス間を順に移動"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "shuffle",
      "name": "カード・ピースシャッフル",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "reveal",
      "name": "カードの公開範囲を変更",
      "modes": [
        [
          "all",
          "全員"
        ],
        [
          "owner",
          "本人のみ"
        ],
        [
          "others",
          "本人以外"
        ],
        [
          "team",
          "所属チームのみ"
        ],
        [
          "non-team",
          "所属チーム以外"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "flip",
      "name": "カード・ピース表裏変更",
      "modes": [
        [
          "switch",
          "めくる"
        ],
        [
          "up",
          "表にする"
        ],
        [
          "down",
          "裏にする"
        ],
        [
          "same",
          "一番上をめくってすべて同じ面"
        ],
        [
          "random",
          "ランダム"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "sort",
      "name": "カード・ピース一覧順に整列",
      "modes": [
        [
          "ascending",
          "昇順"
        ],
        [
          "descending",
          "降順"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "rotate",
      "name": "カード・ピース回転",
      "modes": [
        [
          "clockwise",
          "右へ1刻み"
        ],
        [
          "counterclockwise",
          "左へ1刻み"
        ],
        [
          "set",
          "角度を指定"
        ],
        [
          "random",
          "ランダム"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "token",
      "name": "トークンを移動",
      "modes": [
        [
          "set",
          "位置を指定"
        ],
        [
          "recall",
          "初期位置へ戻す"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "piece",
      "name": "ピース操作",
      "modes": [
        [
          "recall",
          "初期位置へすべて回収"
        ],
        [
          "flip",
          "すべてめくる"
        ],
        [
          "front",
          "すべて表にする"
        ],
        [
          "back",
          "すべて裏にする"
        ],
        [
          "clockwise",
          "すべて右へ90度回転"
        ],
        [
          "counterclockwise",
          "すべて左へ90度回転"
        ]
      ],
      "legacyOnly": true
    },
    {
      "type": "counter",
      "name": "カウンターを変更",
      "modes": [
        [
          "add",
          "加算"
        ],
        [
          "subtract",
          "減算"
        ],
        [
          "set",
          "指定値にする"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "dice",
      "name": "サイコロを振る・変更",
      "modes": [
        [
          "random",
          "振る"
        ],
        [
          "next",
          "次の面"
        ],
        [
          "previous",
          "前の面"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "timer",
      "name": "タイマー操作",
      "modes": [
        [
          "toggle",
          "開始／一時停止を切り替え"
        ],
        [
          "start",
          "開始"
        ],
        [
          "pause",
          "一時停止"
        ],
        [
          "reset",
          "初期時間に戻して停止"
        ],
        [
          "add",
          "秒数を加算"
        ],
        [
          "subtract",
          "秒数を減算"
        ],
        [
          "set",
          "秒数を指定"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "variable",
      "name": "変数を変更",
      "modes": [
        [
          "add",
          "加算"
        ],
        [
          "subtract",
          "減算"
        ],
        [
          "set",
          "指定値にする"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "marker",
      "name": "マーカーを操作",
      "modes": [
        [
          "move",
          "移動"
        ],
        [
          "give",
          "渡す"
        ],
        [
          "remove",
          "除去"
        ],
        [
          "set",
          "指定（互換）"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "phase",
      "name": "フェーズを変更",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "cursor",
      "name": "共有カーソルを変更",
      "modes": [],
      "legacyOnly": true
    },
    {
      "type": "loop",
      "name": "繰り返し",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "loopBreak",
      "name": "ループを抜ける",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "condition",
      "name": "条件分岐",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "message",
      "name": "メッセージを表示",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "notice",
      "name": "通知・確認",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "log",
      "name": "ログを追加",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "permission",
      "name": "プレイヤー操作権限を変更",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "playerBoxVisibility",
      "name": "プレイヤーボックスの表示を変更",
      "modes": [
        [
          "all",
          "全体（全員同じ面）"
        ],
        [
          "owner",
          "プレイヤーだけ表"
        ],
        [
          "others",
          "プレイヤー以外が表"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "teamBoxVisibility",
      "name": "チームボックスの表示を変更",
      "modes": [
        [
          "all",
          "全体（全員同じ面）"
        ],
        [
          "team",
          "所属チームだけ表"
        ],
        [
          "non-team",
          "所属チーム以外が表"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "choice",
      "name": "選択ウィンドウ",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "inputWindow",
      "name": "入力ウィンドウ",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "cardEditRequest",
      "name": "カード入力・描画を依頼",
      "modes": [
        [
          "input",
          "入力モード"
        ],
        [
          "draw",
          "描画モード"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "cardTextChange",
      "name": "カード入力内容を変更",
      "modes": [
        [
          "set",
          "設定"
        ],
        [
          "append",
          "追加"
        ],
        [
          "replace",
          "置換"
        ],
        [
          "clear",
          "消去"
        ]
      ],
      "legacyOnly": false
    },
    {
      "type": "cardDrawingClear",
      "name": "カード描画内容を消去",
      "modes": [],
      "legacyOnly": false
    },
    {
      "type": "commonCall",
      "name": "共通処理を呼び出す",
      "modes": [],
      "legacyOnly": false
    }
  ],
  "gameValues": [
    {
      "referenceId": "game.players",
      "name": "全プレイヤー",
      "type": "player",
      "collection": "array"
    },
    {
      "referenceId": "game.actor",
      "name": "実行者",
      "type": "player",
      "collection": "single"
    },
    {
      "referenceId": "game.turn-player",
      "name": "現在ターンの先頭プレイヤー",
      "type": "player",
      "collection": "single",
      "nullable": true
    },
    {
      "referenceId": "game.turn-players",
      "name": "現在ターンの全プレイヤー",
      "type": "player",
      "collection": "array"
    },
    {
      "referenceId": "game.parts",
      "name": "部品",
      "type": "part",
      "collection": "array"
    },
    {
      "referenceId": "game.cards",
      "name": "カード",
      "type": "card",
      "collection": "array"
    },
    {
      "referenceId": "game.markers",
      "name": "マーカー",
      "type": "marker",
      "collection": "array"
    },
    {
      "referenceId": "game.phase",
      "name": "現在のフェーズ",
      "type": "text",
      "collection": "single"
    },
    {
      "referenceId": "game.playerCount",
      "name": "プレイヤー数",
      "type": "number",
      "collection": "single"
    },
    {
      "referenceId": "game.input.number",
      "name": "入力値（数値）",
      "type": "number",
      "collection": "single"
    },
    {
      "referenceId": "game.input.text",
      "name": "入力値（文字）",
      "type": "text",
      "collection": "single"
    },
    {
      "referenceId": "game.input.texts",
      "name": "入力値（文字配列）",
      "type": "text",
      "collection": "array"
    },
    {
      "referenceId": "game.input.cards",
      "name": "選択したカード個体",
      "type": "card",
      "collection": "array"
    },
    {
      "referenceId": "game.teams",
      "name": "チーム",
      "type": "team",
      "collection": "array"
    },
    {
      "referenceId": "game.global.<global-variable-id>",
      "name": "全体変数",
      "type": "text",
      "collection": "single"
    }
  ],
  "properties": {
    "player": [
      {
        "path": [
          "id"
        ],
        "name": "参加プレイヤーID",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "name"
        ],
        "name": "プレイヤー名",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "parts"
        ],
        "name": "このプレイヤーの部品",
        "type": "part",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "hand"
        ],
        "name": "手札の部品",
        "type": "part",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "cards"
        ],
        "name": "手札のカード",
        "type": "card",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "hand",
          "cards"
        ],
        "name": "手札のカード",
        "type": "card",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "team"
        ],
        "name": "チーム",
        "type": "team",
        "collection": "single",
        "nullable": true
      },
      {
        "path": [
          "variables",
          "<player-variable-id>"
        ],
        "name": "プレイヤー変数",
        "type": "text",
        "collection": "single",
        "nullable": false
      }
    ],
    "card": [
      {
        "path": [
          "pieces"
        ],
        "name": "このカード上のピース",
        "type": "part",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "card-variables",
          null,
          "<card-variable-key>"
        ],
        "name": "undefined：<card-variable-key>",
        "type": "number",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "name"
        ],
        "name": "カード名",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "rank"
        ],
        "name": "ランク",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "suit"
        ],
        "name": "スート",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "face"
        ],
        "name": "面",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "owner"
        ],
        "name": "所有プレイヤー",
        "type": "player",
        "collection": "single",
        "nullable": true
      },
      {
        "path": [
          "variables",
          "<card-variable-key>"
        ],
        "name": "<card-variable-key>",
        "type": "number",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "grids",
          "<grid-id>",
          "filled"
        ],
        "name": "<grid-id>：埋まっている",
        "type": "number",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "grids",
          "<grid-id>",
          "occupied"
        ],
        "name": "<grid-id>：使用マス数",
        "type": "number",
        "collection": "single",
        "nullable": false
      }
    ],
    "part": [
      {
        "path": [
          "definition-id"
        ],
        "name": "部品の定義ID",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "id"
        ],
        "name": "部品ID",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "name"
        ],
        "name": "部品名",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "cards"
        ],
        "name": "中のカード",
        "type": "card",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "value"
        ],
        "name": "値",
        "type": "number",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "variables",
          "<piece-variable-key>"
        ],
        "name": "<piece-variable-key>",
        "type": "text",
        "collection": "single",
        "nullable": false
      }
    ],
    "team": [
      {
        "path": [
          "name"
        ],
        "name": "チーム名",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "parts"
        ],
        "name": "このチームの部品",
        "type": "part",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "players"
        ],
        "name": "所属プレイヤー",
        "type": "player",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "hand"
        ],
        "name": "チーム手札の部品",
        "type": "part",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "hand",
          "cards"
        ],
        "name": "チーム手札のカード",
        "type": "card",
        "collection": "array",
        "nullable": false
      },
      {
        "path": [
          "variables",
          "<team-variable-id>"
        ],
        "name": "チーム変数",
        "type": "text",
        "collection": "single",
        "nullable": false
      }
    ],
    "marker": [
      {
        "path": [
          "name"
        ],
        "name": "マーカー名",
        "type": "text",
        "collection": "single",
        "nullable": false
      },
      {
        "path": [
          "players"
        ],
        "name": "所持プレイヤー",
        "type": "player",
        "collection": "array",
        "nullable": false
      }
    ]
  },
  "bindings": {
    "savepoint": [],
    "stateCheck": [],
    "showCard": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "cardSelector",
        "type": [
          "card"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "messageParts",
        "type": [
          "text",
          "number",
          "boolean"
        ],
        "role": "message",
        "collection": "single"
      }
    ],
    "openTab": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      }
    ],
    "gameEnd": [],
    "reset": [],
    "objectVariable": [
      {
        "path": "amount",
        "type": [
          "number",
          "text"
        ],
        "role": "numeric-expression",
        "collection": "single"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardVariableKey",
        "type": "text",
        "role": "string",
        "collection": "single"
      }
    ],
    "move": [
      {
        "path": "amount",
        "type": "number",
        "role": "numeric-expression",
        "collection": "single"
      },
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "destination",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "destinationLocations",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-locations",
        "collection": "either"
      },
      {
        "path": "destinationPlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "bottom",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "face",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "keep",
          "up",
          "down"
        ]
      },
      {
        "path": "handVisibility",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "owner",
          "others",
          "all",
          "team",
          "non-team"
        ]
      },
      {
        "path": "sourceAmountMode",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "total",
          "per-location",
          "per-destination"
        ]
      },
      {
        "path": "showAnimation",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "destinationGridRow",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "destinationGridColumn",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "destinationPlayerTabId",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "sourcePlayerTabId",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "destinationGridId",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "topOnly",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "includeHands",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "includeHolders",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "wrap",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "reverse",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      }
    ],
    "shuffle": [
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "showAnimation",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "face",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "keep",
          "up",
          "down"
        ]
      }
    ],
    "reveal": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      }
    ],
    "flip": [
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "showAnimation",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      }
    ],
    "sort": [
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      }
    ],
    "rotate": [
      {
        "path": "amount",
        "type": "number",
        "role": "numeric-expression",
        "collection": "single"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      }
    ],
    "token": [
      {
        "path": "amount",
        "type": "number",
        "role": "numeric-expression",
        "collection": "single"
      },
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "showAnimation",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "tokenX",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "tokenY",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "tokenSlot",
        "type": "number",
        "role": "number",
        "collection": "single"
      }
    ],
    "piece": [
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      }
    ],
    "counter": [
      {
        "path": "amount",
        "type": "number",
        "role": "numeric-expression",
        "collection": "single"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      }
    ],
    "dice": [
      {
        "path": "amount",
        "type": "number",
        "role": "numeric-expression",
        "collection": "single"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "showAnimation",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "diceTargets",
        "type": "part",
        "role": "part-targets",
        "collection": "either"
      }
    ],
    "timer": [
      {
        "path": "amount",
        "type": "number",
        "role": "numeric-expression",
        "collection": "single"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      }
    ],
    "variable": [
      {
        "path": "amount",
        "type": [
          "number",
          "text"
        ],
        "role": "numeric-expression",
        "collection": "single"
      },
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "source",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "variableValue",
        "type": [
          "number",
          "text"
        ],
        "role": "numeric-value",
        "collection": "single"
      }
    ],
    "marker": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "source",
        "type": [
          "marker",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "targetOffset",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "wrap",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "reverse",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      }
    ],
    "phase": [
      {
        "path": "source",
        "type": "text",
        "role": "string",
        "collection": "single"
      }
    ],
    "cursor": [
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      }
    ],
    "loop": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "loop.count",
        "type": "number",
        "role": "numeric-value",
        "collection": "single"
      },
      {
        "path": "loop.condition",
        "type": "boolean",
        "role": "condition",
        "collection": "single"
      }
    ],
    "loopBreak": [],
    "condition": [],
    "message": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "messageParts",
        "type": [
          "text",
          "number",
          "boolean"
        ],
        "role": "message",
        "collection": "single"
      },
      {
        "path": "message",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "messageConfig.display",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "toast",
          "dialog",
          "log"
        ]
      },
      {
        "path": "messageConfig.severity",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "error",
          "warning",
          "message"
        ]
      },
      {
        "path": "messageConfig.durationSeconds",
        "type": "number",
        "role": "number",
        "collection": "single"
      }
    ],
    "notice": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "messageParts",
        "type": [
          "text",
          "number",
          "boolean"
        ],
        "role": "message",
        "collection": "single"
      }
    ],
    "log": [
      {
        "path": "logParts",
        "type": [
          "text",
          "number",
          "boolean"
        ],
        "role": "message",
        "collection": "single"
      }
    ],
    "permission": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "permission.seconds",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "permission.change",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "allow",
          "deny",
          "reset"
        ]
      },
      {
        "path": "permission.duration",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "until-changed",
          "turn",
          "phase",
          "seconds"
        ]
      },
      {
        "path": "permission.cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      }
    ],
    "playerBoxVisibility": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      }
    ],
    "teamBoxVisibility": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      }
    ],
    "choice": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "choice.title",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "choice.description",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "choice.cardSetId",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "choice.cardVariableKey",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "choice.resultVariableId",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "choice.minimum",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "choice.maximum",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "choice.rangeStart",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "choice.rangeEnd",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "choice.timeoutSeconds",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "choice.shared",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "choice.sourceKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "custom",
          "players",
          "piece-types",
          "card-sets",
          "card-types",
          "card-location",
          "card-variable-values",
          "boxes",
          "phases",
          "markers",
          "number-range"
        ]
      },
      {
        "path": "choice.answerVisibility",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "respondent",
          "targets",
          "all"
        ]
      },
      {
        "path": "choice.display",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "list",
          "buttons",
          "surface"
        ]
      },
      {
        "path": "choice.timeoutBehavior",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "keep-answers",
          "default"
        ]
      }
    ],
    "inputWindow": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "inputWindow.title",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "inputWindow.description",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "inputWindow.label",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "inputWindow.placeholder",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "inputWindow.initialValue",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "inputWindow.timeoutDefault",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "inputWindow.resultVariableId",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "inputWindow.minimum",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "inputWindow.maximum",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "inputWindow.decimalPlaces",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "inputWindow.minimumLength",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "inputWindow.maximumLength",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "inputWindow.timeoutSeconds",
        "type": "number",
        "role": "number",
        "collection": "single"
      },
      {
        "path": "inputWindow.allowBlank",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "inputWindow.integerOnly",
        "type": "boolean",
        "role": "boolean",
        "collection": "single"
      },
      {
        "path": "inputWindow.format",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "number",
          "text",
          "multiline"
        ]
      },
      {
        "path": "inputWindow.answerVisibility",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "respondent",
          "targets",
          "all"
        ]
      },
      {
        "path": "inputWindow.resultScope",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "player",
          "global"
        ]
      },
      {
        "path": "inputWindow.aggregate",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "sum",
          "average",
          "minimum",
          "maximum"
        ]
      },
      {
        "path": "inputWindow.timeoutBehavior",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "keep-answers",
          "default"
        ]
      }
    ],
    "cardEditRequest": [
      {
        "path": "playerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardEdit.search",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardEdit.replacement",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardEdit.selection",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "top",
          "bottom",
          "random",
          "player",
          "single"
        ]
      }
    ],
    "cardTextChange": [
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "mode",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "messageParts",
        "type": [
          "text",
          "number",
          "boolean"
        ],
        "role": "message",
        "collection": "single"
      },
      {
        "path": "cardEdit.search",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardEdit.replacement",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardEdit.selection",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "top",
          "bottom",
          "random",
          "player",
          "single"
        ]
      }
    ],
    "cardDrawingClear": [
      {
        "path": "source",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardSelector",
        "type": [
          "card",
          "part"
        ],
        "role": "card-selector",
        "collection": "either"
      },
      {
        "path": "cardSelector.location",
        "type": [
          "part",
          "player",
          "team"
        ],
        "role": "card-location",
        "collection": "either"
      },
      {
        "path": "sourcePlayerTarget",
        "type": "player",
        "role": "player-target",
        "collection": "either"
      },
      {
        "path": "targetKind",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "card",
          "piece"
        ]
      },
      {
        "path": "piecePartId",
        "type": [
          "part",
          "text"
        ],
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardEdit.search",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardEdit.replacement",
        "type": "text",
        "role": "string",
        "collection": "single"
      },
      {
        "path": "cardEdit.selection",
        "type": "text",
        "role": "string",
        "collection": "single",
        "choices": [
          "top",
          "bottom",
          "random",
          "player",
          "single"
        ]
      }
    ],
    "commonCall": [
      {
        "path": "commonProcessId",
        "type": "text",
        "role": "string",
        "collection": "single"
      }
    ]
  },
  "dynamicBindings": [
    {
      "action": "choice",
      "pattern": "choice.candidateConditions.N.value",
      "example": "choice.candidateConditions.0.value",
      "note": "Nは0〜7",
      "path": "choice.candidateConditions.0.value",
      "type": "text",
      "role": "string",
      "collection": "single"
    },
    {
      "action": "commonCall",
      "pattern": "commonProcessArguments.<parameter-id>",
      "example": "commonProcessArguments.argument",
      "note": "登録済み引数ID。型・単体/配列は宣言との一致も必要",
      "path": "commonProcessArguments.argument",
      "type": [
        "number",
        "text",
        "boolean",
        "card",
        "player",
        "team",
        "marker",
        "part",
        "object"
      ],
      "role": "common-argument",
      "collection": "either"
    },
    {
      "action": "move",
      "pattern": "cardSelector.condition[.conditions.N]*.value",
      "example": "cardSelector.condition.conditions.0.value",
      "note": "カード操作のみ。入れ子のAND/ORにも対応",
      "path": "cardSelector.condition.conditions.0.value",
      "type": [
        "number",
        "text"
      ],
      "role": "numeric-value",
      "collection": "single"
    },
    {
      "action": "move",
      "pattern": "cardSelector.location.players",
      "example": "cardSelector.location.players",
      "note": "カード操作のみ",
      "path": "cardSelector.location.players",
      "type": "player",
      "role": "player-target",
      "collection": "either"
    },
    {
      "action": "move",
      "pattern": "cardSelector.location.locations.N",
      "example": "cardSelector.location.locations.0",
      "note": "カード操作のみ",
      "path": "cardSelector.location.locations.0",
      "type": [
        "part",
        "player",
        "team"
      ],
      "role": "card-location",
      "collection": "either"
    },
    {
      "action": "move",
      "pattern": "destinationLocations.N",
      "example": "destinationLocations.0",
      "note": "moveのみ",
      "path": "destinationLocations.0",
      "type": [
        "part",
        "player",
        "team"
      ],
      "role": "card-location",
      "collection": "either"
    },
    {
      "action": "message",
      "pattern": "messageParts.N.value",
      "example": "messageParts.0.value",
      "note": "既存の文章項目へ値を設定",
      "path": "messageParts.0.value",
      "type": [
        "number",
        "text"
      ],
      "role": "numeric-value",
      "collection": "single"
    },
    {
      "action": "message",
      "pattern": "messageParts.N.players",
      "example": "messageParts.0.players",
      "note": "既存のプレイヤー名項目へ対象を設定",
      "path": "messageParts.0.players",
      "type": "player",
      "role": "player-target",
      "collection": "either"
    },
    {
      "action": "notice",
      "pattern": "messageParts.N.value",
      "example": "messageParts.0.value",
      "note": "既存の文章項目へ値を設定",
      "path": "messageParts.0.value",
      "type": [
        "number",
        "text"
      ],
      "role": "numeric-value",
      "collection": "single"
    },
    {
      "action": "notice",
      "pattern": "messageParts.N.players",
      "example": "messageParts.0.players",
      "note": "既存のプレイヤー名項目へ対象を設定",
      "path": "messageParts.0.players",
      "type": "player",
      "role": "player-target",
      "collection": "either"
    },
    {
      "action": "showCard",
      "pattern": "messageParts.N.value",
      "example": "messageParts.0.value",
      "note": "既存の文章項目へ値を設定",
      "path": "messageParts.0.value",
      "type": [
        "number",
        "text"
      ],
      "role": "numeric-value",
      "collection": "single"
    },
    {
      "action": "showCard",
      "pattern": "messageParts.N.players",
      "example": "messageParts.0.players",
      "note": "既存のプレイヤー名項目へ対象を設定",
      "path": "messageParts.0.players",
      "type": "player",
      "role": "player-target",
      "collection": "either"
    },
    {
      "action": "log",
      "pattern": "logParts.N.value",
      "example": "logParts.0.value",
      "note": "既存の文章項目へ値を設定",
      "path": "logParts.0.value",
      "type": [
        "number",
        "text"
      ],
      "role": "numeric-value",
      "collection": "single"
    },
    {
      "action": "log",
      "pattern": "logParts.N.players",
      "example": "logParts.0.players",
      "note": "既存のプレイヤー名項目へ対象を設定",
      "path": "logParts.0.players",
      "type": "player",
      "role": "player-target",
      "collection": "either"
    },
    {
      "action": "condition",
      "pattern": "branches.N.condition",
      "example": "branches.0.condition",
      "note": "既存の分岐へ設定",
      "path": "branches.0.condition",
      "type": "boolean",
      "role": "condition",
      "collection": "single"
    },
    {
      "action": "condition",
      "pattern": "branches.N.left",
      "example": "branches.0.left",
      "note": "既存の分岐へ設定",
      "path": "branches.0.left",
      "type": [
        "number",
        "text"
      ],
      "role": "numeric-expression",
      "collection": "single"
    },
    {
      "action": "condition",
      "pattern": "branches.N.right",
      "example": "branches.0.right",
      "note": "既存の分岐へ設定",
      "path": "branches.0.right",
      "type": [
        "number",
        "text"
      ],
      "role": "numeric-expression",
      "collection": "single"
    }
  ]
}
