{
  "cases": [
    {
      "name": "capacity_reassignment",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiQ2FwYWNpdGllcyByZXF1aXJlIGV4cGxpY2l0IGFzc2lnbm1lbnRzIiwgImNvc3RfdW5pdHMiOiAiY29zdCB1bml0cyBwZXIgZGVtYW5kIHVuaXQiLCAiZGVtYW5kX3VuaXRzIjogImRlbWFuZCB1bml0cyIsICJwcm92ZW5hbmNlIjogIkdlbmVyYXRlZCBjb21wdXRhdGlvbmFsIGNvbnRyb2w7IG5vIGN1c3RvbWVyIG9yIGdlb2dyYXBoaWMgZGF0YS4iLCAiayI6IDIsICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwyCkMxLDIK"
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwyLGZhbHNlClMxLDIsZmFsc2UK"
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDEKQzAsUzEsNApDMSxTMCwxCkMxLFMxLDUK"
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzAKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S0",
            "S1"
          ],
          "issues": [],
          "exact_cost": "12",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S0": "2",
            "S1": "2"
          }
        },
        "nearest_reassignment": {
          "valid": false,
          "selected_ids": [
            "S0",
            "S1"
          ],
          "issues": [
            "Capacity exceeded at S0: load 4, capacity 2"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            },
            {
              "client_id": "C1",
              "site_id": "S0"
            }
          ],
          "loads": {
            "S0": "4",
            "S1": "0"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S0",
              "S1"
            ],
            "issues": [],
            "exact_cost": "12",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S0"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S0": "2",
              "S1": "2"
            }
          },
          "exact_lower_bound": "4",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "8",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Capacities require explicit assignments",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 2,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "2",
          "C1": "2"
        },
        "sites": {
          "S0": {
            "capacity": "2",
            "required": false
          },
          "S1": {
            "capacity": "2",
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "1",
            "S1": "4"
          },
          "C1": {
            "S0": "1",
            "S1": "5"
          }
        },
        "selected": [
          "S0",
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S0"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "escaped_title",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiPHNjcmlwdD5hbGVydChcImlucHV0XCIpPC9zY3JpcHQ+ICYgcmV2aWV3IiwgImNvc3RfdW5pdHMiOiAiY29zdCB1bml0cyBwZXIgZGVtYW5kIHVuaXQiLCAiZGVtYW5kX3VuaXRzIjogImRlbWFuZCB1bml0cyIsICJwcm92ZW5hbmNlIjogIkdlbmVyYXRlZCBjb21wdXRhdGlvbmFsIGNvbnRyb2w7IG5vIGN1c3RvbWVyIG9yIGdlb2dyYXBoaWMgZGF0YS4iLCAiayI6IDEsICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "<script>alert(\"input\")</script> & review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "fractional_capacity",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiRXhhY3QgZnJhY3Rpb25hbCBkZW1hbmQgYW5kIGNhcGFjaXR5IiwgImNvc3RfdW5pdHMiOiAiY29zdCB1bml0cyBwZXIgZGVtYW5kIHVuaXQiLCAiZGVtYW5kX3VuaXRzIjogImRlbWFuZCB1bml0cyIsICJwcm92ZW5hbmNlIjogIkdlbmVyYXRlZCBjb21wdXRhdGlvbmFsIGNvbnRyb2w7IG5vIGN1c3RvbWVyIG9yIGdlb2dyYXBoaWMgZGF0YS4iLCAiayI6IDIsICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxLzMKQzEsMi8zCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwxLzMsZmFsc2UKUzEsMi8zLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAuMQpDMCxTMSwwLjUKQzEsUzAsMC4xCkMxLFMxLDAuNQo="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzAKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S0",
            "S1"
          ],
          "issues": [],
          "exact_cost": "11/30",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S0": "1/3",
            "S1": "2/3"
          }
        },
        "nearest_reassignment": {
          "valid": false,
          "selected_ids": [
            "S0",
            "S1"
          ],
          "issues": [
            "Capacity exceeded at S0: load 1, capacity 1/3"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            },
            {
              "client_id": "C1",
              "site_id": "S0"
            }
          ],
          "loads": {
            "S0": "1",
            "S1": "0"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S0",
              "S1"
            ],
            "issues": [],
            "exact_cost": "11/30",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S0"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S0": "1/3",
              "S1": "2/3"
            }
          },
          "exact_lower_bound": "1/10",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "4/15",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Exact fractional demand and capacity",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 2,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "1/3",
          "C1": "2/3"
        },
        "sites": {
          "S0": {
            "capacity": "1/3",
            "required": false
          },
          "S1": {
            "capacity": "2/3",
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "1/10",
            "S1": "1/2"
          },
          "C1": {
            "S0": "1/10",
            "S1": "1/2"
          }
        },
        "selected": [
          "S0",
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S0"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "infeasible_assignment",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAyLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwyCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwxLGZhbHNlClMxLDEsZmFsc2UK"
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDEKQzAsUzEsMgo="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzAK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [
            "S0",
            "S1"
          ],
          "issues": [
            "Capacity exceeded at S0: load 2, capacity 1"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            }
          ],
          "loads": {
            "S0": "2",
            "S1": "0"
          }
        },
        "nearest_reassignment": {
          "valid": false,
          "selected_ids": [
            "S0",
            "S1"
          ],
          "issues": [
            "Capacity exceeded at S0: load 2, capacity 1"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            }
          ],
          "loads": {
            "S0": "2",
            "S1": "0"
          }
        },
        "comparison": {
          "best_origin": null,
          "best_checked_plan": null,
          "exact_lower_bound": "2",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": null,
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 2,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "2"
        },
        "sites": {
          "S0": {
            "capacity": "1",
            "required": false
          },
          "S1": {
            "capacity": "1",
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "1",
            "S1": "2"
          }
        },
        "selected": [
          "S0",
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S0"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "input_invalid",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMCwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "required_site",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiUmVxdWlyZWQgc2l0ZSBjaGFuZ2VzIHRoZSBmZWFzaWJsZSBjaG9pY2VzIiwgImNvc3RfdW5pdHMiOiAiY29zdCB1bml0cyBwZXIgZGVtYW5kIHVuaXQiLCAiZGVtYW5kX3VuaXRzIjogImRlbWFuZCB1bml0cyIsICJwcm92ZW5hbmNlIjogIkdlbmVyYXRlZCBjb21wdXRhdGlvbmFsIGNvbnRyb2w7IG5vIGN1c3RvbWVyIG9yIGdlb2dyYXBoaWMgZGF0YS4iLCAiayI6IDEsICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLHRydWUK"
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Required site changes the feasible choices",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": true
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "solver_scale_refused",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiRXhhY3QgaW5wdXQgZXhjZWVkcyBzb2x2ZXIgc2NhbGluZyBsaW1pdCIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDEvMTAwMDAwMwpDMCxTMSwyCkMxLFMwLDEKQzEsUzEsMAo="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "20",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "20",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "20",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "10/1000003",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "20000050/1000003",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Exact input exceeds solver scaling limit",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "1/1000003",
            "S1": "2"
          },
          "C1": {
            "S0": "1",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "unsupported_split",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJzcGxpdHRhYmxlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "unsupported_model",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "splittable",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": [
          "Only whole-client assignment to one open site is implemented"
        ]
      }
    },
    {
      "name": "weighted_choice",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "workflow_shape",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIDEwMC1jbGllbnQsIDEwLXNpdGUgYXNzaWdubWVudCByZXZpZXciLCAiY29zdF91bml0cyI6ICJjb3N0IHVuaXRzIHBlciBkZW1hbmQgdW5pdCIsICJkZW1hbmRfdW5pdHMiOiAiZGVtYW5kIHVuaXRzIiwgInByb3ZlbmFuY2UiOiAiR2VuZXJhdGVkIGNvbXB1dGF0aW9uYWwgY29udHJvbDsgbm8gY3VzdG9tZXIgb3IgZ2VvZ3JhcGhpYyBkYXRhLiIsICJrIjogOCwgInNlbGVjdGlvbl9ydWxlIjogImV4YWN0bHlfayIsICJhc3NpZ25tZW50X3J1bGUiOiAid2hvbGVfY2xpZW50X3RvX29uZV9vcGVuX3NpdGUiLCAib2JqZWN0aXZlIjogIndlaWdodGVkX3N1bV9hc3NpZ25tZW50X2Nvc3QiLCAiYWRkaXRpb25hbF9jb25zdHJhaW50cyI6IFtdfQ=="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxCkMxLDgKQzIsNApDMywxMQpDNCw3CkM1LDMKQzYsMTAKQzcsNgpDOCwyCkM5LDkKQzEwLDUKQzExLDEKQzEyLDgKQzEzLDQKQzE0LDExCkMxNSw3CkMxNiwzCkMxNywxMApDMTgsNgpDMTksMgpDMjAsOQpDMjEsNQpDMjIsMQpDMjMsOApDMjQsNApDMjUsMTEKQzI2LDcKQzI3LDMKQzI4LDEwCkMyOSw2CkMzMCwyCkMzMSw5CkMzMiw1CkMzMywxCkMzNCw4CkMzNSw0CkMzNiwxMQpDMzcsNwpDMzgsMwpDMzksMTAKQzQwLDYKQzQxLDIKQzQyLDkKQzQzLDUKQzQ0LDEKQzQ1LDgKQzQ2LDQKQzQ3LDExCkM0OCw3CkM0OSwzCkM1MCwxMApDNTEsNgpDNTIsMgpDNTMsOQpDNTQsNQpDNTUsMQpDNTYsOApDNTcsNApDNTgsMTEKQzU5LDcKQzYwLDMKQzYxLDEwCkM2Miw2CkM2MywyCkM2NCw5CkM2NSw1CkM2NiwxCkM2Nyw4CkM2OCw0CkM2OSwxMQpDNzAsNwpDNzEsMwpDNzIsMTAKQzczLDYKQzc0LDIKQzc1LDkKQzc2LDUKQzc3LDEKQzc4LDgKQzc5LDQKQzgwLDExCkM4MSw3CkM4MiwzCkM4MywxMApDODQsNgpDODUsMgpDODYsOQpDODcsNQpDODgsMQpDODksOApDOTAsNApDOTEsMTEKQzkyLDcKQzkzLDMKQzk0LDEwCkM5NSw2CkM5NiwyCkM5Nyw5CkM5OCw1CkM5OSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwxMDAsdHJ1ZQpTMSwxMDAsZmFsc2UKUzIsMTAwLGZhbHNlClMzLDEwMCxmYWxzZQpTNCwxMDAsZmFsc2UKUzUsMTAwLGZhbHNlClM2LDEwMCxmYWxzZQpTNywxMDAsZmFsc2UKUzgsMTAwLGZhbHNlClM5LDEwMCxmYWxzZQo="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDEKQzAsUzEsNApDMCxTMiw3CkMwLFMzLDcKQzAsUzQsMTAKQzAsUzUsOApDMCxTNiw4CkMwLFM3LDExCkMwLFM4LDE0CkMwLFM5LDE0CkMxLFMwLDMKQzEsUzEsNApDMSxTMiw0CkMxLFMzLDcKQzEsUzQsMTAKQzEsUzUsNwpDMSxTNiw4CkMxLFM3LDExCkMxLFM4LDExCkMxLFM5LDE0CkMyLFMwLDUKQzIsUzEsMQpDMixTMiw0CkMyLFMzLDcKQzIsUzQsNwpDMixTNSw5CkMyLFM2LDgKQzIsUzcsOApDMixTOCwxMQpDMixTOSwxNApDMyxTMCw0CkMzLFMxLDMKQzMsUzIsNApDMyxTMyw0CkMzLFM0LDcKQzMsUzUsMTEKQzMsUzYsNwpDMyxTNyw4CkMzLFM4LDExCkMzLFM5LDExCkM0LFMwLDYKQzQsUzEsNQpDNCxTMiwxCkM0LFMzLDQKQzQsUzQsNwpDNCxTNSwxMApDNCxTNiw5CkM0LFM3LDgKQzQsUzgsOApDNCxTOSwxMQpDNSxTMCw4CkM1LFMxLDQKQzUsUzIsMwpDNSxTMyw0CkM1LFM0LDQKQzUsUzUsMTIKQzUsUzYsMTEKQzUsUzcsNwpDNSxTOCw4CkM1LFM5LDExCkM2LFMwLDcKQzYsUzEsNgpDNixTMiw1CkM2LFMzLDEKQzYsUzQsNApDNixTNSwxNApDNixTNiwxMApDNixTNyw5CkM2LFM4LDgKQzYsUzksOApDNyxTMCw5CkM3LFMxLDgKQzcsUzIsNApDNyxTMywzCkM3LFM0LDQKQzcsUzUsMTMKQzcsUzYsMTIKQzcsUzcsMTEKQzcsUzgsNwpDNyxTOSw4CkM4LFMwLDExCkM4LFMxLDcKQzgsUzIsNgpDOCxTMyw1CkM4LFM0LDEKQzgsUzUsMTUKQzgsUzYsMTQKQzgsUzcsMTAKQzgsUzgsOQpDOCxTOSw4CkM5LFMwLDEwCkM5LFMxLDkKQzksUzIsOApDOSxTMyw0CkM5LFM0LDMKQzksUzUsMTcKQzksUzYsMTMKQzksUzcsMTIKQzksUzgsMTEKQzksUzksNwpDMTAsUzAsMwpDMTAsUzEsNgpDMTAsUzIsNgpDMTAsUzMsOQpDMTAsUzQsMTIKQzEwLFM1LDUKQzEwLFM2LDgKQzEwLFM3LDExCkMxMCxTOCwxMQpDMTAsUzksMTQKQzExLFMwLDUKQzExLFMxLDMKQzExLFMyLDYKQzExLFMzLDkKQzExLFM0LDkKQzExLFM1LDcKQzExLFM2LDgKQzExLFM3LDgKQzExLFM4LDExCkMxMSxTOSwxNApDMTIsUzAsNApDMTIsUzEsMwpDMTIsUzIsNgpDMTIsUzMsNgpDMTIsUzQsOQpDMTIsUzUsOQpDMTIsUzYsNQpDMTIsUzcsOApDMTIsUzgsMTEKQzEyLFM5LDExCkMxMyxTMCw2CkMxMyxTMSw1CkMxMyxTMiwzCkMxMyxTMyw2CkMxMyxTNCw5CkMxMyxTNSw4CkMxMyxTNiw3CkMxMyxTNyw4CkMxMyxTOCw4CkMxMyxTOSwxMQpDMTQsUzAsOApDMTQsUzEsNApDMTQsUzIsMwpDMTQsUzMsNgpDMTQsUzQsNgpDMTQsUzUsMTAKQzE0LFM2LDkKQzE0LFM3LDUKQzE0LFM4LDgKQzE0LFM5LDExCkMxNSxTMCw3CkMxNSxTMSw2CkMxNSxTMiw1CkMxNSxTMywzCkMxNSxTNCw2CkMxNSxTNSwxMgpDMTUsUzYsOApDMTUsUzcsNwpDMTUsUzgsOApDMTUsUzksOApDMTYsUzAsOQpDMTYsUzEsOApDMTYsUzIsNApDMTYsUzMsMwpDMTYsUzQsNgpDMTYsUzUsMTEKQzE2LFM2LDEwCkMxNixTNyw5CkMxNixTOCw1CkMxNixTOSw4CkMxNyxTMCwxMQpDMTcsUzEsNwpDMTcsUzIsNgpDMTcsUzMsNQpDMTcsUzQsMwpDMTcsUzUsMTMKQzE3LFM2LDEyCkMxNyxTNyw4CkMxNyxTOCw3CkMxNyxTOSw4CkMxOCxTMCwxMApDMTgsUzEsOQpDMTgsUzIsOApDMTgsUzMsNApDMTgsUzQsMwpDMTgsUzUsMTUKQzE4LFM2LDExCkMxOCxTNywxMApDMTgsUzgsOQpDMTgsUzksNQpDMTksUzAsMTIKQzE5LFMxLDExCkMxOSxTMiw3CkMxOSxTMyw2CkMxOSxTNCw1CkMxOSxTNSwxNApDMTksUzYsMTMKQzE5LFM3LDEyCkMxOSxTOCw4CkMxOSxTOSw3CkMyMCxTMCw1CkMyMCxTMSw1CkMyMCxTMiw4CkMyMCxTMywxMQpDMjAsUzQsMTEKQzIwLFM1LDUKQzIwLFM2LDgKQzIwLFM3LDgKQzIwLFM4LDExCkMyMCxTOSwxNApDMjEsUzAsNApDMjEsUzEsNQpDMjEsUzIsOApDMjEsUzMsOApDMjEsUzQsMTEKQzIxLFM1LDcKQzIxLFM2LDUKQzIxLFM3LDgKQzIxLFM4LDExCkMyMSxTOSwxMQpDMjIsUzAsNgpDMjIsUzEsNQpDMjIsUzIsNQpDMjIsUzMsOApDMjIsUzQsMTEKQzIyLFM1LDYKQzIyLFM2LDUKQzIyLFM3LDgKQzIyLFM4LDgKQzIyLFM5LDExCkMyMyxTMCw4CkMyMyxTMSw0CkMyMyxTMiw1CkMyMyxTMyw4CkMyMyxTNCw4CkMyMyxTNSw4CkMyMyxTNiw3CkMyMyxTNyw1CkMyMyxTOCw4CkMyMyxTOSwxMQpDMjQsUzAsNwpDMjQsUzEsNgpDMjQsUzIsNQpDMjQsUzMsNQpDMjQsUzQsOApDMjQsUzUsMTAKQzI0LFM2LDYKQzI0LFM3LDUKQzI0LFM4LDgKQzI0LFM5LDgKQzI1LFMwLDkKQzI1LFMxLDgKQzI1LFMyLDQKQzI1LFMzLDUKQzI1LFM0LDgKQzI1LFM1LDkKQzI1LFM2LDgKQzI1LFM3LDcKQzI1LFM4LDUKQzI1LFM5LDgKQzI2LFMwLDExCkMyNixTMSw3CkMyNixTMiw2CkMyNixTMyw1CkMyNixTNCw1CkMyNixTNSwxMQpDMjYsUzYsMTAKQzI2LFM3LDYKQzI2LFM4LDUKQzI2LFM5LDgKQzI3LFMwLDEwCkMyNyxTMSw5CkMyNyxTMiw4CkMyNyxTMyw0CkMyNyxTNCw1CkMyNyxTNSwxMwpDMjcsUzYsOQpDMjcsUzcsOApDMjcsUzgsNwpDMjcsUzksNQpDMjgsUzAsMTIKQzI4LFMxLDExCkMyOCxTMiw3CkMyOCxTMyw2CkMyOCxTNCw1CkMyOCxTNSwxMgpDMjgsUzYsMTEKQzI4LFM3LDEwCkMyOCxTOCw2CkMyOCxTOSw1CkMyOSxTMCwxNApDMjksUzEsMTAKQzI5LFMyLDkKQzI5LFMzLDgKQzI5LFM0LDQKQzI5LFM1LDE0CkMyOSxTNiwxMwpDMjksUzcsOQpDMjksUzgsOApDMjksUzksNwpDMzAsUzAsNApDMzAsUzEsNwpDMzAsUzIsMTAKQzMwLFMzLDEwCkMzMCxTNCwxMwpDMzAsUzUsNQpDMzAsUzYsNQpDMzAsUzcsOApDMzAsUzgsMTEKQzMwLFM5LDExCkMzMSxTMCw2CkMzMSxTMSw3CkMzMSxTMiw3CkMzMSxTMywxMApDMzEsUzQsMTMKQzMxLFM1LDQKQzMxLFM2LDUKQzMxLFM3LDgKQzMxLFM4LDgKQzMxLFM5LDExCkMzMixTMCw4CkMzMixTMSw0CkMzMixTMiw3CkMzMixTMywxMApDMzIsUzQsMTAKQzMyLFM1LDYKQzMyLFM2LDUKQzMyLFM3LDUKQzMyLFM4LDgKQzMyLFM5LDExCkMzMyxTMCw3CkMzMyxTMSw2CkMzMyxTMiw3CkMzMyxTMyw3CkMzMyxTNCwxMApDMzMsUzUsOApDMzMsUzYsNApDMzMsUzcsNQpDMzMsUzgsOApDMzMsUzksOApDMzQsUzAsOQpDMzQsUzEsOApDMzQsUzIsNApDMzQsUzMsNwpDMzQsUzQsMTAKQzM0LFM1LDcKQzM0LFM2LDYKQzM0LFM3LDUKQzM0LFM4LDUKQzM0LFM5LDgKQzM1LFMwLDExCkMzNSxTMSw3CkMzNSxTMiw2CkMzNSxTMyw3CkMzNSxTNCw3CkMzNSxTNSw5CkMzNSxTNiw4CkMzNSxTNyw0CkMzNSxTOCw1CkMzNSxTOSw4CkMzNixTMCwxMApDMzYsUzEsOQpDMzYsUzIsOApDMzYsUzMsNApDMzYsUzQsNwpDMzYsUzUsMTEKQzM2LFM2LDcKQzM2LFM3LDYKQzM2LFM4LDUKQzM2LFM5LDUKQzM3LFMwLDEyCkMzNyxTMSwxMQpDMzcsUzIsNwpDMzcsUzMsNgpDMzcsUzQsNwpDMzcsUzUsMTAKQzM3LFM2LDkKQzM3LFM3LDgKQzM3LFM4LDQKQzM3LFM5LDUKQzM4LFMwLDE0CkMzOCxTMSwxMApDMzgsUzIsOQpDMzgsUzMsOApDMzgsUzQsNApDMzgsUzUsMTIKQzM4LFM2LDExCkMzOCxTNyw3CkMzOCxTOCw2CkMzOCxTOSw1CkMzOSxTMCwxMwpDMzksUzEsMTIKQzM5LFMyLDExCkMzOSxTMyw3CkMzOSxTNCw2CkMzOSxTNSwxNApDMzksUzYsMTAKQzM5LFM3LDkKQzM5LFM4LDgKQzM5LFM5LDQKQzQwLFMwLDYKQzQwLFMxLDkKQzQwLFMyLDkKQzQwLFMzLDEyCkM0MCxTNCwxNQpDNDAsUzUsMgpDNDAsUzYsNQpDNDAsUzcsOApDNDAsUzgsOApDNDAsUzksMTEKQzQxLFMwLDgKQzQxLFMxLDYKQzQxLFMyLDkKQzQxLFMzLDEyCkM0MSxTNCwxMgpDNDEsUzUsNApDNDEsUzYsNQpDNDEsUzcsNQpDNDEsUzgsOApDNDEsUzksMTEKQzQyLFMwLDcKQzQyLFMxLDYKQzQyLFMyLDkKQzQyLFMzLDkKQzQyLFM0LDEyCkM0MixTNSw2CkM0MixTNiwyCkM0MixTNyw1CkM0MixTOCw4CkM0MixTOSw4CkM0MyxTMCw5CkM0MyxTMSw4CkM0MyxTMiw2CkM0MyxTMyw5CkM0MyxTNCwxMgpDNDMsUzUsNQpDNDMsUzYsNApDNDMsUzcsNQpDNDMsUzgsNQpDNDMsUzksOApDNDQsUzAsMTEKQzQ0LFMxLDcKQzQ0LFMyLDYKQzQ0LFMzLDkKQzQ0LFM0LDkKQzQ0LFM1LDcKQzQ0LFM2LDYKQzQ0LFM3LDIKQzQ0LFM4LDUKQzQ0LFM5LDgKQzQ1LFMwLDEwCkM0NSxTMSw5CkM0NSxTMiw4CkM0NSxTMyw2CkM0NSxTNCw5CkM0NSxTNSw5CkM0NSxTNiw1CkM0NSxTNyw0CkM0NSxTOCw1CkM0NSxTOSw1CkM0NixTMCwxMgpDNDYsUzEsMTEKQzQ2LFMyLDcKQzQ2LFMzLDYKQzQ2LFM0LDkKQzQ2LFM1LDgKQzQ2LFM2LDcKQzQ2LFM3LDYKQzQ2LFM4LDIKQzQ2LFM5LDUKQzQ3LFMwLDE0CkM0NyxTMSwxMApDNDcsUzIsOQpDNDcsUzMsOApDNDcsUzQsNgpDNDcsUzUsMTAKQzQ3LFM2LDkKQzQ3LFM3LDUKQzQ3LFM4LDQKQzQ3LFM5LDUKQzQ4LFMwLDEzCkM0OCxTMSwxMgpDNDgsUzIsMTEKQzQ4LFMzLDcKQzQ4LFM0LDYKQzQ4LFM1LDEyCkM0OCxTNiw4CkM0OCxTNyw3CkM0OCxTOCw2CkM0OCxTOSwyCkM0OSxTMCwxNQpDNDksUzEsMTQKQzQ5LFMyLDEwCkM0OSxTMyw5CkM0OSxTNCw4CkM0OSxTNSwxMQpDNDksUzYsMTAKQzQ5LFM3LDkKQzQ5LFM4LDUKQzQ5LFM5LDQKQzUwLFMwLDgKQzUwLFMxLDgKQzUwLFMyLDExCkM1MCxTMywxNApDNTAsUzQsMTQKQzUwLFM1LDIKQzUwLFM2LDUKQzUwLFM3LDUKQzUwLFM4LDgKQzUwLFM5LDExCkM1MSxTMCw3CkM1MSxTMSw4CkM1MSxTMiwxMQpDNTEsUzMsMTEKQzUxLFM0LDE0CkM1MSxTNSw0CkM1MSxTNiwyCkM1MSxTNyw1CkM1MSxTOCw4CkM1MSxTOSw4CkM1MixTMCw5CkM1MixTMSw4CkM1MixTMiw4CkM1MixTMywxMQpDNTIsUzQsMTQKQzUyLFM1LDMKQzUyLFM2LDIKQzUyLFM3LDUKQzUyLFM4LDUKQzUyLFM5LDgKQzUzLFMwLDExCkM1MyxTMSw3CkM1MyxTMiw4CkM1MyxTMywxMQpDNTMsUzQsMTEKQzUzLFM1LDUKQzUzLFM2LDQKQzUzLFM3LDIKQzUzLFM4LDUKQzUzLFM5LDgKQzU0LFMwLDEwCkM1NCxTMSw5CkM1NCxTMiw4CkM1NCxTMyw4CkM1NCxTNCwxMQpDNTQsUzUsNwpDNTQsUzYsMwpDNTQsUzcsMgpDNTQsUzgsNQpDNTQsUzksNQpDNTUsUzAsMTIKQzU1LFMxLDExCkM1NSxTMiw3CkM1NSxTMyw4CkM1NSxTNCwxMQpDNTUsUzUsNgpDNTUsUzYsNQpDNTUsUzcsNApDNTUsUzgsMgpDNTUsUzksNQpDNTYsUzAsMTQKQzU2LFMxLDEwCkM1NixTMiw5CkM1NixTMyw4CkM1NixTNCw4CkM1NixTNSw4CkM1NixTNiw3CkM1NixTNywzCkM1NixTOCwyCkM1NixTOSw1CkM1NyxTMCwxMwpDNTcsUzEsMTIKQzU3LFMyLDExCkM1NyxTMyw3CkM1NyxTNCw4CkM1NyxTNSwxMApDNTcsUzYsNgpDNTcsUzcsNQpDNTcsUzgsNApDNTcsUzksMgpDNTgsUzAsMTUKQzU4LFMxLDE0CkM1OCxTMiwxMApDNTgsUzMsOQpDNTgsUzQsOApDNTgsUzUsOQpDNTgsUzYsOApDNTgsUzcsNwpDNTgsUzgsMwpDNTgsUzksMgpDNTksUzAsMTcKQzU5LFMxLDEzCkM1OSxTMiwxMgpDNTksUzMsMTEKQzU5LFM0LDcKQzU5LFM1LDExCkM1OSxTNiwxMApDNTksUzcsNgpDNTksUzgsNQpDNTksUzksNApDNjAsUzAsNwpDNjAsUzEsMTAKQzYwLFMyLDEzCkM2MCxTMywxMwpDNjAsUzQsMTYKQzYwLFM1LDQKQzYwLFM2LDQKQzYwLFM3LDcKQzYwLFM4LDEwCkM2MCxTOSwxMApDNjEsUzAsOQpDNjEsUzEsMTAKQzYxLFMyLDEwCkM2MSxTMywxMwpDNjEsUzQsMTYKQzYxLFM1LDMKQzYxLFM2LDQKQzYxLFM3LDcKQzYxLFM4LDcKQzYxLFM5LDEwCkM2MixTMCwxMQpDNjIsUzEsNwpDNjIsUzIsMTAKQzYyLFMzLDEzCkM2MixTNCwxMwpDNjIsUzUsNQpDNjIsUzYsNApDNjIsUzcsNApDNjIsUzgsNwpDNjIsUzksMTAKQzYzLFMwLDEwCkM2MyxTMSw5CkM2MyxTMiwxMApDNjMsUzMsMTAKQzYzLFM0LDEzCkM2MyxTNSw3CkM2MyxTNiwzCkM2MyxTNyw0CkM2MyxTOCw3CkM2MyxTOSw3CkM2NCxTMCwxMgpDNjQsUzEsMTEKQzY0LFMyLDcKQzY0LFMzLDEwCkM2NCxTNCwxMwpDNjQsUzUsNgpDNjQsUzYsNQpDNjQsUzcsNApDNjQsUzgsNApDNjQsUzksNwpDNjUsUzAsMTQKQzY1LFMxLDEwCkM2NSxTMiw5CkM2NSxTMywxMApDNjUsUzQsMTAKQzY1LFM1LDgKQzY1LFM2LDcKQzY1LFM3LDMKQzY1LFM4LDQKQzY1LFM5LDcKQzY2LFMwLDEzCkM2NixTMSwxMgpDNjYsUzIsMTEKQzY2LFMzLDcKQzY2LFM0LDEwCkM2NixTNSwxMApDNjYsUzYsNgpDNjYsUzcsNQpDNjYsUzgsNApDNjYsUzksNApDNjcsUzAsMTUKQzY3LFMxLDE0CkM2NyxTMiwxMApDNjcsUzMsOQpDNjcsUzQsMTAKQzY3LFM1LDkKQzY3LFM2LDgKQzY3LFM3LDcKQzY3LFM4LDMKQzY3LFM5LDQKQzY4LFMwLDE3CkM2OCxTMSwxMwpDNjgsUzIsMTIKQzY4LFMzLDExCkM2OCxTNCw3CkM2OCxTNSwxMQpDNjgsUzYsMTAKQzY4LFM3LDYKQzY4LFM4LDUKQzY4LFM5LDQKQzY5LFMwLDE2CkM2OSxTMSwxNQpDNjksUzIsMTQKQzY5LFMzLDEwCkM2OSxTNCw5CkM2OSxTNSwxMwpDNjksUzYsOQpDNjksUzcsOApDNjksUzgsNwpDNjksUzksMwpDNzAsUzAsOQpDNzAsUzEsMTIKQzcwLFMyLDEyCkM3MCxTMywxNQpDNzAsUzQsMTgKQzcwLFM1LDMKQzcwLFM2LDYKQzcwLFM3LDkKQzcwLFM4LDkKQzcwLFM5LDEyCkM3MSxTMCwxMQpDNzEsUzEsOQpDNzEsUzIsMTIKQzcxLFMzLDE1CkM3MSxTNCwxNQpDNzEsUzUsNQpDNzEsUzYsNgpDNzEsUzcsNgpDNzEsUzgsOQpDNzEsUzksMTIKQzcyLFMwLDEwCkM3MixTMSw5CkM3MixTMiwxMgpDNzIsUzMsMTIKQzcyLFM0LDE1CkM3MixTNSw3CkM3MixTNiwzCkM3MixTNyw2CkM3MixTOCw5CkM3MixTOSw5CkM3MyxTMCwxMgpDNzMsUzEsMTEKQzczLFMyLDkKQzczLFMzLDEyCkM3MyxTNCwxNQpDNzMsUzUsNgpDNzMsUzYsNQpDNzMsUzcsNgpDNzMsUzgsNgpDNzMsUzksOQpDNzQsUzAsMTQKQzc0LFMxLDEwCkM3NCxTMiw5CkM3NCxTMywxMgpDNzQsUzQsMTIKQzc0LFM1LDgKQzc0LFM2LDcKQzc0LFM3LDMKQzc0LFM4LDYKQzc0LFM5LDkKQzc1LFMwLDEzCkM3NSxTMSwxMgpDNzUsUzIsMTEKQzc1LFMzLDkKQzc1LFM0LDEyCkM3NSxTNSwxMApDNzUsUzYsNgpDNzUsUzcsNQpDNzUsUzgsNgpDNzUsUzksNgpDNzYsUzAsMTUKQzc2LFMxLDE0CkM3NixTMiwxMApDNzYsUzMsOQpDNzYsUzQsMTIKQzc2LFM1LDkKQzc2LFM2LDgKQzc2LFM3LDcKQzc2LFM4LDMKQzc2LFM5LDYKQzc3LFMwLDE3CkM3NyxTMSwxMwpDNzcsUzIsMTIKQzc3LFMzLDExCkM3NyxTNCw5CkM3NyxTNSwxMQpDNzcsUzYsMTAKQzc3LFM3LDYKQzc3LFM4LDUKQzc3LFM5LDYKQzc4LFMwLDE2CkM3OCxTMSwxNQpDNzgsUzIsMTQKQzc4LFMzLDEwCkM3OCxTNCw5CkM3OCxTNSwxMwpDNzgsUzYsOQpDNzgsUzcsOApDNzgsUzgsNwpDNzgsUzksMwpDNzksUzAsMTgKQzc5LFMxLDE3CkM3OSxTMiwxMwpDNzksUzMsMTIKQzc5LFM0LDExCkM3OSxTNSwxMgpDNzksUzYsMTEKQzc5LFM3LDEwCkM3OSxTOCw2CkM3OSxTOSw1CkM4MCxTMCwxMQpDODAsUzEsMTEKQzgwLFMyLDE0CkM4MCxTMywxNwpDODAsUzQsMTcKQzgwLFM1LDUKQzgwLFM2LDgKQzgwLFM3LDgKQzgwLFM4LDExCkM4MCxTOSwxNApDODEsUzAsMTAKQzgxLFMxLDExCkM4MSxTMiwxNApDODEsUzMsMTQKQzgxLFM0LDE3CkM4MSxTNSw3CkM4MSxTNiw1CkM4MSxTNyw4CkM4MSxTOCwxMQpDODEsUzksMTEKQzgyLFMwLDEyCkM4MixTMSwxMQpDODIsUzIsMTEKQzgyLFMzLDE0CkM4MixTNCwxNwpDODIsUzUsNgpDODIsUzYsNQpDODIsUzcsOApDODIsUzgsOApDODIsUzksMTEKQzgzLFMwLDE0CkM4MyxTMSwxMApDODMsUzIsMTEKQzgzLFMzLDE0CkM4MyxTNCwxNApDODMsUzUsOApDODMsUzYsNwpDODMsUzcsNQpDODMsUzgsOApDODMsUzksMTEKQzg0LFMwLDEzCkM4NCxTMSwxMgpDODQsUzIsMTEKQzg0LFMzLDExCkM4NCxTNCwxNApDODQsUzUsMTAKQzg0LFM2LDYKQzg0LFM3LDUKQzg0LFM4LDgKQzg0LFM5LDgKQzg1LFMwLDE1CkM4NSxTMSwxNApDODUsUzIsMTAKQzg1LFMzLDExCkM4NSxTNCwxNApDODUsUzUsOQpDODUsUzYsOApDODUsUzcsNwpDODUsUzgsNQpDODUsUzksOApDODYsUzAsMTcKQzg2LFMxLDEzCkM4NixTMiwxMgpDODYsUzMsMTEKQzg2LFM0LDExCkM4NixTNSwxMQpDODYsUzYsMTAKQzg2LFM3LDYKQzg2LFM4LDUKQzg2LFM5LDgKQzg3LFMwLDE2CkM4NyxTMSwxNQpDODcsUzIsMTQKQzg3LFMzLDEwCkM4NyxTNCwxMQpDODcsUzUsMTMKQzg3LFM2LDkKQzg3LFM3LDgKQzg3LFM4LDcKQzg3LFM5LDUKQzg4LFMwLDE4CkM4OCxTMSwxNwpDODgsUzIsMTMKQzg4LFMzLDEyCkM4OCxTNCwxMQpDODgsUzUsMTIKQzg4LFM2LDExCkM4OCxTNywxMApDODgsUzgsNgpDODgsUzksNQpDODksUzAsMjAKQzg5LFMxLDE2CkM4OSxTMiwxNQpDODksUzMsMTQKQzg5LFM0LDEwCkM4OSxTNSwxNApDODksUzYsMTMKQzg5LFM3LDkKQzg5LFM4LDgKQzg5LFM5LDcKQzkwLFMwLDEwCkM5MCxTMSwxMwpDOTAsUzIsMTYKQzkwLFMzLDE2CkM5MCxTNCwxOQpDOTAsUzUsNwpDOTAsUzYsNwpDOTAsUzcsMTAKQzkwLFM4LDEzCkM5MCxTOSwxMwpDOTEsUzAsMTIKQzkxLFMxLDEzCkM5MSxTMiwxMwpDOTEsUzMsMTYKQzkxLFM0LDE5CkM5MSxTNSw2CkM5MSxTNiw3CkM5MSxTNywxMApDOTEsUzgsMTAKQzkxLFM5LDEzCkM5MixTMCwxNApDOTIsUzEsMTAKQzkyLFMyLDEzCkM5MixTMywxNgpDOTIsUzQsMTYKQzkyLFM1LDgKQzkyLFM2LDcKQzkyLFM3LDcKQzkyLFM4LDEwCkM5MixTOSwxMwpDOTMsUzAsMTMKQzkzLFMxLDEyCkM5MyxTMiwxMwpDOTMsUzMsMTMKQzkzLFM0LDE2CkM5MyxTNSwxMApDOTMsUzYsNgpDOTMsUzcsNwpDOTMsUzgsMTAKQzkzLFM5LDEwCkM5NCxTMCwxNQpDOTQsUzEsMTQKQzk0LFMyLDEwCkM5NCxTMywxMwpDOTQsUzQsMTYKQzk0LFM1LDkKQzk0LFM2LDgKQzk0LFM3LDcKQzk0LFM4LDcKQzk0LFM5LDEwCkM5NSxTMCwxNwpDOTUsUzEsMTMKQzk1LFMyLDEyCkM5NSxTMywxMwpDOTUsUzQsMTMKQzk1LFM1LDExCkM5NSxTNiwxMApDOTUsUzcsNgpDOTUsUzgsNwpDOTUsUzksMTAKQzk2LFMwLDE2CkM5NixTMSwxNQpDOTYsUzIsMTQKQzk2LFMzLDEwCkM5NixTNCwxMwpDOTYsUzUsMTMKQzk2LFM2LDkKQzk2LFM3LDgKQzk2LFM4LDcKQzk2LFM5LDcKQzk3LFMwLDE4CkM5NyxTMSwxNwpDOTcsUzIsMTMKQzk3LFMzLDEyCkM5NyxTNCwxMwpDOTcsUzUsMTIKQzk3LFM2LDExCkM5NyxTNywxMApDOTcsUzgsNgpDOTcsUzksNwpDOTgsUzAsMjAKQzk4LFMxLDE2CkM5OCxTMiwxNQpDOTgsUzMsMTQKQzk4LFM0LDEwCkM5OCxTNSwxNApDOTgsUzYsMTMKQzk4LFM3LDkKQzk4LFM4LDgKQzk4LFM5LDcKQzk5LFMwLDE5CkM5OSxTMSwxOApDOTksUzIsMTcKQzk5LFMzLDEzCkM5OSxTNCwxMgpDOTksUzUsMTYKQzk5LFM2LDEyCkM5OSxTNywxMQpDOTksUzgsMTAKQzk5LFM5LDYK"
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMApTMQpTMgpTMwpTNApTNQpTNgpTNwo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzAKQzEsUzEKQzIsUzIKQzMsUzMKQzQsUzQKQzUsUzUKQzYsUzYKQzcsUzcKQzgsUzAKQzksUzEKQzEwLFMyCkMxMSxTMwpDMTIsUzQKQzEzLFM1CkMxNCxTNgpDMTUsUzcKQzE2LFMwCkMxNyxTMQpDMTgsUzIKQzE5LFMzCkMyMCxTNApDMjEsUzUKQzIyLFM2CkMyMyxTNwpDMjQsUzAKQzI1LFMxCkMyNixTMgpDMjcsUzMKQzI4LFM0CkMyOSxTNQpDMzAsUzYKQzMxLFM3CkMzMixTMApDMzMsUzEKQzM0LFMyCkMzNSxTMwpDMzYsUzQKQzM3LFM1CkMzOCxTNgpDMzksUzcKQzQwLFMwCkM0MSxTMQpDNDIsUzIKQzQzLFMzCkM0NCxTNApDNDUsUzUKQzQ2LFM2CkM0NyxTNwpDNDgsUzAKQzQ5LFMxCkM1MCxTMgpDNTEsUzMKQzUyLFM0CkM1MyxTNQpDNTQsUzYKQzU1LFM3CkM1NixTMApDNTcsUzEKQzU4LFMyCkM1OSxTMwpDNjAsUzQKQzYxLFM1CkM2MixTNgpDNjMsUzcKQzY0LFMwCkM2NSxTMQpDNjYsUzIKQzY3LFMzCkM2OCxTNApDNjksUzUKQzcwLFM2CkM3MSxTNwpDNzIsUzAKQzczLFMxCkM3NCxTMgpDNzUsUzMKQzc2LFM0CkM3NyxTNQpDNzgsUzYKQzc5LFM3CkM4MCxTMApDODEsUzEKQzgyLFMyCkM4MyxTMwpDODQsUzQKQzg1LFM1CkM4NixTNgpDODcsUzcKQzg4LFMwCkM4OSxTMQpDOTAsUzIKQzkxLFMzCkM5MixTNApDOTMsUzUKQzk0LFM2CkM5NSxTNwpDOTYsUzAKQzk3LFMxCkM5OCxTMgpDOTksUzMK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S0",
            "S1",
            "S2",
            "S3",
            "S4",
            "S5",
            "S6",
            "S7"
          ],
          "issues": [],
          "exact_cost": "5472",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            },
            {
              "client_id": "C10",
              "site_id": "S2"
            },
            {
              "client_id": "C11",
              "site_id": "S3"
            },
            {
              "client_id": "C12",
              "site_id": "S4"
            },
            {
              "client_id": "C13",
              "site_id": "S5"
            },
            {
              "client_id": "C14",
              "site_id": "S6"
            },
            {
              "client_id": "C15",
              "site_id": "S7"
            },
            {
              "client_id": "C16",
              "site_id": "S0"
            },
            {
              "client_id": "C17",
              "site_id": "S1"
            },
            {
              "client_id": "C18",
              "site_id": "S2"
            },
            {
              "client_id": "C19",
              "site_id": "S3"
            },
            {
              "client_id": "C2",
              "site_id": "S2"
            },
            {
              "client_id": "C20",
              "site_id": "S4"
            },
            {
              "client_id": "C21",
              "site_id": "S5"
            },
            {
              "client_id": "C22",
              "site_id": "S6"
            },
            {
              "client_id": "C23",
              "site_id": "S7"
            },
            {
              "client_id": "C24",
              "site_id": "S0"
            },
            {
              "client_id": "C25",
              "site_id": "S1"
            },
            {
              "client_id": "C26",
              "site_id": "S2"
            },
            {
              "client_id": "C27",
              "site_id": "S3"
            },
            {
              "client_id": "C28",
              "site_id": "S4"
            },
            {
              "client_id": "C29",
              "site_id": "S5"
            },
            {
              "client_id": "C3",
              "site_id": "S3"
            },
            {
              "client_id": "C30",
              "site_id": "S6"
            },
            {
              "client_id": "C31",
              "site_id": "S7"
            },
            {
              "client_id": "C32",
              "site_id": "S0"
            },
            {
              "client_id": "C33",
              "site_id": "S1"
            },
            {
              "client_id": "C34",
              "site_id": "S2"
            },
            {
              "client_id": "C35",
              "site_id": "S3"
            },
            {
              "client_id": "C36",
              "site_id": "S4"
            },
            {
              "client_id": "C37",
              "site_id": "S5"
            },
            {
              "client_id": "C38",
              "site_id": "S6"
            },
            {
              "client_id": "C39",
              "site_id": "S7"
            },
            {
              "client_id": "C4",
              "site_id": "S4"
            },
            {
              "client_id": "C40",
              "site_id": "S0"
            },
            {
              "client_id": "C41",
              "site_id": "S1"
            },
            {
              "client_id": "C42",
              "site_id": "S2"
            },
            {
              "client_id": "C43",
              "site_id": "S3"
            },
            {
              "client_id": "C44",
              "site_id": "S4"
            },
            {
              "client_id": "C45",
              "site_id": "S5"
            },
            {
              "client_id": "C46",
              "site_id": "S6"
            },
            {
              "client_id": "C47",
              "site_id": "S7"
            },
            {
              "client_id": "C48",
              "site_id": "S0"
            },
            {
              "client_id": "C49",
              "site_id": "S1"
            },
            {
              "client_id": "C5",
              "site_id": "S5"
            },
            {
              "client_id": "C50",
              "site_id": "S2"
            },
            {
              "client_id": "C51",
              "site_id": "S3"
            },
            {
              "client_id": "C52",
              "site_id": "S4"
            },
            {
              "client_id": "C53",
              "site_id": "S5"
            },
            {
              "client_id": "C54",
              "site_id": "S6"
            },
            {
              "client_id": "C55",
              "site_id": "S7"
            },
            {
              "client_id": "C56",
              "site_id": "S0"
            },
            {
              "client_id": "C57",
              "site_id": "S1"
            },
            {
              "client_id": "C58",
              "site_id": "S2"
            },
            {
              "client_id": "C59",
              "site_id": "S3"
            },
            {
              "client_id": "C6",
              "site_id": "S6"
            },
            {
              "client_id": "C60",
              "site_id": "S4"
            },
            {
              "client_id": "C61",
              "site_id": "S5"
            },
            {
              "client_id": "C62",
              "site_id": "S6"
            },
            {
              "client_id": "C63",
              "site_id": "S7"
            },
            {
              "client_id": "C64",
              "site_id": "S0"
            },
            {
              "client_id": "C65",
              "site_id": "S1"
            },
            {
              "client_id": "C66",
              "site_id": "S2"
            },
            {
              "client_id": "C67",
              "site_id": "S3"
            },
            {
              "client_id": "C68",
              "site_id": "S4"
            },
            {
              "client_id": "C69",
              "site_id": "S5"
            },
            {
              "client_id": "C7",
              "site_id": "S7"
            },
            {
              "client_id": "C70",
              "site_id": "S6"
            },
            {
              "client_id": "C71",
              "site_id": "S7"
            },
            {
              "client_id": "C72",
              "site_id": "S0"
            },
            {
              "client_id": "C73",
              "site_id": "S1"
            },
            {
              "client_id": "C74",
              "site_id": "S2"
            },
            {
              "client_id": "C75",
              "site_id": "S3"
            },
            {
              "client_id": "C76",
              "site_id": "S4"
            },
            {
              "client_id": "C77",
              "site_id": "S5"
            },
            {
              "client_id": "C78",
              "site_id": "S6"
            },
            {
              "client_id": "C79",
              "site_id": "S7"
            },
            {
              "client_id": "C8",
              "site_id": "S0"
            },
            {
              "client_id": "C80",
              "site_id": "S0"
            },
            {
              "client_id": "C81",
              "site_id": "S1"
            },
            {
              "client_id": "C82",
              "site_id": "S2"
            },
            {
              "client_id": "C83",
              "site_id": "S3"
            },
            {
              "client_id": "C84",
              "site_id": "S4"
            },
            {
              "client_id": "C85",
              "site_id": "S5"
            },
            {
              "client_id": "C86",
              "site_id": "S6"
            },
            {
              "client_id": "C87",
              "site_id": "S7"
            },
            {
              "client_id": "C88",
              "site_id": "S0"
            },
            {
              "client_id": "C89",
              "site_id": "S1"
            },
            {
              "client_id": "C9",
              "site_id": "S1"
            },
            {
              "client_id": "C90",
              "site_id": "S2"
            },
            {
              "client_id": "C91",
              "site_id": "S3"
            },
            {
              "client_id": "C92",
              "site_id": "S4"
            },
            {
              "client_id": "C93",
              "site_id": "S5"
            },
            {
              "client_id": "C94",
              "site_id": "S6"
            },
            {
              "client_id": "C95",
              "site_id": "S7"
            },
            {
              "client_id": "C96",
              "site_id": "S0"
            },
            {
              "client_id": "C97",
              "site_id": "S1"
            },
            {
              "client_id": "C98",
              "site_id": "S2"
            },
            {
              "client_id": "C99",
              "site_id": "S3"
            }
          ],
          "loads": {
            "S0": "69",
            "S1": "83",
            "S2": "75",
            "S3": "78",
            "S4": "73",
            "S5": "69",
            "S6": "76",
            "S7": "72"
          }
        },
        "nearest_reassignment": {
          "valid": false,
          "selected_ids": [
            "S0",
            "S1",
            "S2",
            "S3",
            "S4",
            "S5",
            "S6",
            "S7"
          ],
          "issues": [
            "Capacity exceeded at S7: load 210, capacity 100"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            },
            {
              "client_id": "C1",
              "site_id": "S0"
            },
            {
              "client_id": "C10",
              "site_id": "S0"
            },
            {
              "client_id": "C11",
              "site_id": "S1"
            },
            {
              "client_id": "C12",
              "site_id": "S1"
            },
            {
              "client_id": "C13",
              "site_id": "S2"
            },
            {
              "client_id": "C14",
              "site_id": "S2"
            },
            {
              "client_id": "C15",
              "site_id": "S3"
            },
            {
              "client_id": "C16",
              "site_id": "S3"
            },
            {
              "client_id": "C17",
              "site_id": "S4"
            },
            {
              "client_id": "C18",
              "site_id": "S4"
            },
            {
              "client_id": "C19",
              "site_id": "S4"
            },
            {
              "client_id": "C2",
              "site_id": "S1"
            },
            {
              "client_id": "C20",
              "site_id": "S0"
            },
            {
              "client_id": "C21",
              "site_id": "S0"
            },
            {
              "client_id": "C22",
              "site_id": "S1"
            },
            {
              "client_id": "C23",
              "site_id": "S1"
            },
            {
              "client_id": "C24",
              "site_id": "S2"
            },
            {
              "client_id": "C25",
              "site_id": "S2"
            },
            {
              "client_id": "C26",
              "site_id": "S3"
            },
            {
              "client_id": "C27",
              "site_id": "S3"
            },
            {
              "client_id": "C28",
              "site_id": "S4"
            },
            {
              "client_id": "C29",
              "site_id": "S4"
            },
            {
              "client_id": "C3",
              "site_id": "S1"
            },
            {
              "client_id": "C30",
              "site_id": "S0"
            },
            {
              "client_id": "C31",
              "site_id": "S5"
            },
            {
              "client_id": "C32",
              "site_id": "S1"
            },
            {
              "client_id": "C33",
              "site_id": "S6"
            },
            {
              "client_id": "C34",
              "site_id": "S2"
            },
            {
              "client_id": "C35",
              "site_id": "S7"
            },
            {
              "client_id": "C36",
              "site_id": "S3"
            },
            {
              "client_id": "C37",
              "site_id": "S3"
            },
            {
              "client_id": "C38",
              "site_id": "S4"
            },
            {
              "client_id": "C39",
              "site_id": "S4"
            },
            {
              "client_id": "C4",
              "site_id": "S2"
            },
            {
              "client_id": "C40",
              "site_id": "S5"
            },
            {
              "client_id": "C41",
              "site_id": "S5"
            },
            {
              "client_id": "C42",
              "site_id": "S6"
            },
            {
              "client_id": "C43",
              "site_id": "S6"
            },
            {
              "client_id": "C44",
              "site_id": "S7"
            },
            {
              "client_id": "C45",
              "site_id": "S7"
            },
            {
              "client_id": "C46",
              "site_id": "S3"
            },
            {
              "client_id": "C47",
              "site_id": "S7"
            },
            {
              "client_id": "C48",
              "site_id": "S4"
            },
            {
              "client_id": "C49",
              "site_id": "S4"
            },
            {
              "client_id": "C5",
              "site_id": "S2"
            },
            {
              "client_id": "C50",
              "site_id": "S5"
            },
            {
              "client_id": "C51",
              "site_id": "S6"
            },
            {
              "client_id": "C52",
              "site_id": "S6"
            },
            {
              "client_id": "C53",
              "site_id": "S7"
            },
            {
              "client_id": "C54",
              "site_id": "S7"
            },
            {
              "client_id": "C55",
              "site_id": "S7"
            },
            {
              "client_id": "C56",
              "site_id": "S7"
            },
            {
              "client_id": "C57",
              "site_id": "S7"
            },
            {
              "client_id": "C58",
              "site_id": "S7"
            },
            {
              "client_id": "C59",
              "site_id": "S7"
            },
            {
              "client_id": "C6",
              "site_id": "S3"
            },
            {
              "client_id": "C60",
              "site_id": "S5"
            },
            {
              "client_id": "C61",
              "site_id": "S5"
            },
            {
              "client_id": "C62",
              "site_id": "S6"
            },
            {
              "client_id": "C63",
              "site_id": "S6"
            },
            {
              "client_id": "C64",
              "site_id": "S7"
            },
            {
              "client_id": "C65",
              "site_id": "S7"
            },
            {
              "client_id": "C66",
              "site_id": "S7"
            },
            {
              "client_id": "C67",
              "site_id": "S7"
            },
            {
              "client_id": "C68",
              "site_id": "S7"
            },
            {
              "client_id": "C69",
              "site_id": "S7"
            },
            {
              "client_id": "C7",
              "site_id": "S3"
            },
            {
              "client_id": "C70",
              "site_id": "S5"
            },
            {
              "client_id": "C71",
              "site_id": "S5"
            },
            {
              "client_id": "C72",
              "site_id": "S6"
            },
            {
              "client_id": "C73",
              "site_id": "S6"
            },
            {
              "client_id": "C74",
              "site_id": "S7"
            },
            {
              "client_id": "C75",
              "site_id": "S7"
            },
            {
              "client_id": "C76",
              "site_id": "S7"
            },
            {
              "client_id": "C77",
              "site_id": "S7"
            },
            {
              "client_id": "C78",
              "site_id": "S7"
            },
            {
              "client_id": "C79",
              "site_id": "S7"
            },
            {
              "client_id": "C8",
              "site_id": "S4"
            },
            {
              "client_id": "C80",
              "site_id": "S5"
            },
            {
              "client_id": "C81",
              "site_id": "S6"
            },
            {
              "client_id": "C82",
              "site_id": "S6"
            },
            {
              "client_id": "C83",
              "site_id": "S7"
            },
            {
              "client_id": "C84",
              "site_id": "S7"
            },
            {
              "client_id": "C85",
              "site_id": "S7"
            },
            {
              "client_id": "C86",
              "site_id": "S7"
            },
            {
              "client_id": "C87",
              "site_id": "S7"
            },
            {
              "client_id": "C88",
              "site_id": "S7"
            },
            {
              "client_id": "C89",
              "site_id": "S7"
            },
            {
              "client_id": "C9",
              "site_id": "S4"
            },
            {
              "client_id": "C90",
              "site_id": "S5"
            },
            {
              "client_id": "C91",
              "site_id": "S5"
            },
            {
              "client_id": "C92",
              "site_id": "S6"
            },
            {
              "client_id": "C93",
              "site_id": "S6"
            },
            {
              "client_id": "C94",
              "site_id": "S7"
            },
            {
              "client_id": "C95",
              "site_id": "S7"
            },
            {
              "client_id": "C96",
              "site_id": "S7"
            },
            {
              "client_id": "C97",
              "site_id": "S7"
            },
            {
              "client_id": "C98",
              "site_id": "S7"
            },
            {
              "client_id": "C99",
              "site_id": "S7"
            }
          ],
          "loads": {
            "S0": "30",
            "S1": "38",
            "S2": "48",
            "S3": "58",
            "S4": "68",
            "S5": "76",
            "S6": "67",
            "S7": "210"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S0",
              "S1",
              "S2",
              "S3",
              "S4",
              "S5",
              "S6",
              "S7"
            ],
            "issues": [],
            "exact_cost": "5472",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S0"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              },
              {
                "client_id": "C10",
                "site_id": "S2"
              },
              {
                "client_id": "C11",
                "site_id": "S3"
              },
              {
                "client_id": "C12",
                "site_id": "S4"
              },
              {
                "client_id": "C13",
                "site_id": "S5"
              },
              {
                "client_id": "C14",
                "site_id": "S6"
              },
              {
                "client_id": "C15",
                "site_id": "S7"
              },
              {
                "client_id": "C16",
                "site_id": "S0"
              },
              {
                "client_id": "C17",
                "site_id": "S1"
              },
              {
                "client_id": "C18",
                "site_id": "S2"
              },
              {
                "client_id": "C19",
                "site_id": "S3"
              },
              {
                "client_id": "C2",
                "site_id": "S2"
              },
              {
                "client_id": "C20",
                "site_id": "S4"
              },
              {
                "client_id": "C21",
                "site_id": "S5"
              },
              {
                "client_id": "C22",
                "site_id": "S6"
              },
              {
                "client_id": "C23",
                "site_id": "S7"
              },
              {
                "client_id": "C24",
                "site_id": "S0"
              },
              {
                "client_id": "C25",
                "site_id": "S1"
              },
              {
                "client_id": "C26",
                "site_id": "S2"
              },
              {
                "client_id": "C27",
                "site_id": "S3"
              },
              {
                "client_id": "C28",
                "site_id": "S4"
              },
              {
                "client_id": "C29",
                "site_id": "S5"
              },
              {
                "client_id": "C3",
                "site_id": "S3"
              },
              {
                "client_id": "C30",
                "site_id": "S6"
              },
              {
                "client_id": "C31",
                "site_id": "S7"
              },
              {
                "client_id": "C32",
                "site_id": "S0"
              },
              {
                "client_id": "C33",
                "site_id": "S1"
              },
              {
                "client_id": "C34",
                "site_id": "S2"
              },
              {
                "client_id": "C35",
                "site_id": "S3"
              },
              {
                "client_id": "C36",
                "site_id": "S4"
              },
              {
                "client_id": "C37",
                "site_id": "S5"
              },
              {
                "client_id": "C38",
                "site_id": "S6"
              },
              {
                "client_id": "C39",
                "site_id": "S7"
              },
              {
                "client_id": "C4",
                "site_id": "S4"
              },
              {
                "client_id": "C40",
                "site_id": "S0"
              },
              {
                "client_id": "C41",
                "site_id": "S1"
              },
              {
                "client_id": "C42",
                "site_id": "S2"
              },
              {
                "client_id": "C43",
                "site_id": "S3"
              },
              {
                "client_id": "C44",
                "site_id": "S4"
              },
              {
                "client_id": "C45",
                "site_id": "S5"
              },
              {
                "client_id": "C46",
                "site_id": "S6"
              },
              {
                "client_id": "C47",
                "site_id": "S7"
              },
              {
                "client_id": "C48",
                "site_id": "S0"
              },
              {
                "client_id": "C49",
                "site_id": "S1"
              },
              {
                "client_id": "C5",
                "site_id": "S5"
              },
              {
                "client_id": "C50",
                "site_id": "S2"
              },
              {
                "client_id": "C51",
                "site_id": "S3"
              },
              {
                "client_id": "C52",
                "site_id": "S4"
              },
              {
                "client_id": "C53",
                "site_id": "S5"
              },
              {
                "client_id": "C54",
                "site_id": "S6"
              },
              {
                "client_id": "C55",
                "site_id": "S7"
              },
              {
                "client_id": "C56",
                "site_id": "S0"
              },
              {
                "client_id": "C57",
                "site_id": "S1"
              },
              {
                "client_id": "C58",
                "site_id": "S2"
              },
              {
                "client_id": "C59",
                "site_id": "S3"
              },
              {
                "client_id": "C6",
                "site_id": "S6"
              },
              {
                "client_id": "C60",
                "site_id": "S4"
              },
              {
                "client_id": "C61",
                "site_id": "S5"
              },
              {
                "client_id": "C62",
                "site_id": "S6"
              },
              {
                "client_id": "C63",
                "site_id": "S7"
              },
              {
                "client_id": "C64",
                "site_id": "S0"
              },
              {
                "client_id": "C65",
                "site_id": "S1"
              },
              {
                "client_id": "C66",
                "site_id": "S2"
              },
              {
                "client_id": "C67",
                "site_id": "S3"
              },
              {
                "client_id": "C68",
                "site_id": "S4"
              },
              {
                "client_id": "C69",
                "site_id": "S5"
              },
              {
                "client_id": "C7",
                "site_id": "S7"
              },
              {
                "client_id": "C70",
                "site_id": "S6"
              },
              {
                "client_id": "C71",
                "site_id": "S7"
              },
              {
                "client_id": "C72",
                "site_id": "S0"
              },
              {
                "client_id": "C73",
                "site_id": "S1"
              },
              {
                "client_id": "C74",
                "site_id": "S2"
              },
              {
                "client_id": "C75",
                "site_id": "S3"
              },
              {
                "client_id": "C76",
                "site_id": "S4"
              },
              {
                "client_id": "C77",
                "site_id": "S5"
              },
              {
                "client_id": "C78",
                "site_id": "S6"
              },
              {
                "client_id": "C79",
                "site_id": "S7"
              },
              {
                "client_id": "C8",
                "site_id": "S0"
              },
              {
                "client_id": "C80",
                "site_id": "S0"
              },
              {
                "client_id": "C81",
                "site_id": "S1"
              },
              {
                "client_id": "C82",
                "site_id": "S2"
              },
              {
                "client_id": "C83",
                "site_id": "S3"
              },
              {
                "client_id": "C84",
                "site_id": "S4"
              },
              {
                "client_id": "C85",
                "site_id": "S5"
              },
              {
                "client_id": "C86",
                "site_id": "S6"
              },
              {
                "client_id": "C87",
                "site_id": "S7"
              },
              {
                "client_id": "C88",
                "site_id": "S0"
              },
              {
                "client_id": "C89",
                "site_id": "S1"
              },
              {
                "client_id": "C9",
                "site_id": "S1"
              },
              {
                "client_id": "C90",
                "site_id": "S2"
              },
              {
                "client_id": "C91",
                "site_id": "S3"
              },
              {
                "client_id": "C92",
                "site_id": "S4"
              },
              {
                "client_id": "C93",
                "site_id": "S5"
              },
              {
                "client_id": "C94",
                "site_id": "S6"
              },
              {
                "client_id": "C95",
                "site_id": "S7"
              },
              {
                "client_id": "C96",
                "site_id": "S0"
              },
              {
                "client_id": "C97",
                "site_id": "S1"
              },
              {
                "client_id": "C98",
                "site_id": "S2"
              },
              {
                "client_id": "C99",
                "site_id": "S3"
              }
            ],
            "loads": {
              "S0": "69",
              "S1": "83",
              "S2": "75",
              "S3": "78",
              "S4": "73",
              "S5": "69",
              "S6": "76",
              "S7": "72"
            }
          },
          "exact_lower_bound": "2260",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "3212",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated 100-client, 10-site assignment review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 8,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "1",
          "C1": "8",
          "C10": "5",
          "C11": "1",
          "C12": "8",
          "C13": "4",
          "C14": "11",
          "C15": "7",
          "C16": "3",
          "C17": "10",
          "C18": "6",
          "C19": "2",
          "C2": "4",
          "C20": "9",
          "C21": "5",
          "C22": "1",
          "C23": "8",
          "C24": "4",
          "C25": "11",
          "C26": "7",
          "C27": "3",
          "C28": "10",
          "C29": "6",
          "C3": "11",
          "C30": "2",
          "C31": "9",
          "C32": "5",
          "C33": "1",
          "C34": "8",
          "C35": "4",
          "C36": "11",
          "C37": "7",
          "C38": "3",
          "C39": "10",
          "C4": "7",
          "C40": "6",
          "C41": "2",
          "C42": "9",
          "C43": "5",
          "C44": "1",
          "C45": "8",
          "C46": "4",
          "C47": "11",
          "C48": "7",
          "C49": "3",
          "C5": "3",
          "C50": "10",
          "C51": "6",
          "C52": "2",
          "C53": "9",
          "C54": "5",
          "C55": "1",
          "C56": "8",
          "C57": "4",
          "C58": "11",
          "C59": "7",
          "C6": "10",
          "C60": "3",
          "C61": "10",
          "C62": "6",
          "C63": "2",
          "C64": "9",
          "C65": "5",
          "C66": "1",
          "C67": "8",
          "C68": "4",
          "C69": "11",
          "C7": "6",
          "C70": "7",
          "C71": "3",
          "C72": "10",
          "C73": "6",
          "C74": "2",
          "C75": "9",
          "C76": "5",
          "C77": "1",
          "C78": "8",
          "C79": "4",
          "C8": "2",
          "C80": "11",
          "C81": "7",
          "C82": "3",
          "C83": "10",
          "C84": "6",
          "C85": "2",
          "C86": "9",
          "C87": "5",
          "C88": "1",
          "C89": "8",
          "C9": "9",
          "C90": "4",
          "C91": "11",
          "C92": "7",
          "C93": "3",
          "C94": "10",
          "C95": "6",
          "C96": "2",
          "C97": "9",
          "C98": "5",
          "C99": "1"
        },
        "sites": {
          "S0": {
            "capacity": "100",
            "required": true
          },
          "S1": {
            "capacity": "100",
            "required": false
          },
          "S2": {
            "capacity": "100",
            "required": false
          },
          "S3": {
            "capacity": "100",
            "required": false
          },
          "S4": {
            "capacity": "100",
            "required": false
          },
          "S5": {
            "capacity": "100",
            "required": false
          },
          "S6": {
            "capacity": "100",
            "required": false
          },
          "S7": {
            "capacity": "100",
            "required": false
          },
          "S8": {
            "capacity": "100",
            "required": false
          },
          "S9": {
            "capacity": "100",
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "1",
            "S1": "4",
            "S2": "7",
            "S3": "7",
            "S4": "10",
            "S5": "8",
            "S6": "8",
            "S7": "11",
            "S8": "14",
            "S9": "14"
          },
          "C1": {
            "S0": "3",
            "S1": "4",
            "S2": "4",
            "S3": "7",
            "S4": "10",
            "S5": "7",
            "S6": "8",
            "S7": "11",
            "S8": "11",
            "S9": "14"
          },
          "C10": {
            "S0": "3",
            "S1": "6",
            "S2": "6",
            "S3": "9",
            "S4": "12",
            "S5": "5",
            "S6": "8",
            "S7": "11",
            "S8": "11",
            "S9": "14"
          },
          "C11": {
            "S0": "5",
            "S1": "3",
            "S2": "6",
            "S3": "9",
            "S4": "9",
            "S5": "7",
            "S6": "8",
            "S7": "8",
            "S8": "11",
            "S9": "14"
          },
          "C12": {
            "S0": "4",
            "S1": "3",
            "S2": "6",
            "S3": "6",
            "S4": "9",
            "S5": "9",
            "S6": "5",
            "S7": "8",
            "S8": "11",
            "S9": "11"
          },
          "C13": {
            "S0": "6",
            "S1": "5",
            "S2": "3",
            "S3": "6",
            "S4": "9",
            "S5": "8",
            "S6": "7",
            "S7": "8",
            "S8": "8",
            "S9": "11"
          },
          "C14": {
            "S0": "8",
            "S1": "4",
            "S2": "3",
            "S3": "6",
            "S4": "6",
            "S5": "10",
            "S6": "9",
            "S7": "5",
            "S8": "8",
            "S9": "11"
          },
          "C15": {
            "S0": "7",
            "S1": "6",
            "S2": "5",
            "S3": "3",
            "S4": "6",
            "S5": "12",
            "S6": "8",
            "S7": "7",
            "S8": "8",
            "S9": "8"
          },
          "C16": {
            "S0": "9",
            "S1": "8",
            "S2": "4",
            "S3": "3",
            "S4": "6",
            "S5": "11",
            "S6": "10",
            "S7": "9",
            "S8": "5",
            "S9": "8"
          },
          "C17": {
            "S0": "11",
            "S1": "7",
            "S2": "6",
            "S3": "5",
            "S4": "3",
            "S5": "13",
            "S6": "12",
            "S7": "8",
            "S8": "7",
            "S9": "8"
          },
          "C18": {
            "S0": "10",
            "S1": "9",
            "S2": "8",
            "S3": "4",
            "S4": "3",
            "S5": "15",
            "S6": "11",
            "S7": "10",
            "S8": "9",
            "S9": "5"
          },
          "C19": {
            "S0": "12",
            "S1": "11",
            "S2": "7",
            "S3": "6",
            "S4": "5",
            "S5": "14",
            "S6": "13",
            "S7": "12",
            "S8": "8",
            "S9": "7"
          },
          "C2": {
            "S0": "5",
            "S1": "1",
            "S2": "4",
            "S3": "7",
            "S4": "7",
            "S5": "9",
            "S6": "8",
            "S7": "8",
            "S8": "11",
            "S9": "14"
          },
          "C20": {
            "S0": "5",
            "S1": "5",
            "S2": "8",
            "S3": "11",
            "S4": "11",
            "S5": "5",
            "S6": "8",
            "S7": "8",
            "S8": "11",
            "S9": "14"
          },
          "C21": {
            "S0": "4",
            "S1": "5",
            "S2": "8",
            "S3": "8",
            "S4": "11",
            "S5": "7",
            "S6": "5",
            "S7": "8",
            "S8": "11",
            "S9": "11"
          },
          "C22": {
            "S0": "6",
            "S1": "5",
            "S2": "5",
            "S3": "8",
            "S4": "11",
            "S5": "6",
            "S6": "5",
            "S7": "8",
            "S8": "8",
            "S9": "11"
          },
          "C23": {
            "S0": "8",
            "S1": "4",
            "S2": "5",
            "S3": "8",
            "S4": "8",
            "S5": "8",
            "S6": "7",
            "S7": "5",
            "S8": "8",
            "S9": "11"
          },
          "C24": {
            "S0": "7",
            "S1": "6",
            "S2": "5",
            "S3": "5",
            "S4": "8",
            "S5": "10",
            "S6": "6",
            "S7": "5",
            "S8": "8",
            "S9": "8"
          },
          "C25": {
            "S0": "9",
            "S1": "8",
            "S2": "4",
            "S3": "5",
            "S4": "8",
            "S5": "9",
            "S6": "8",
            "S7": "7",
            "S8": "5",
            "S9": "8"
          },
          "C26": {
            "S0": "11",
            "S1": "7",
            "S2": "6",
            "S3": "5",
            "S4": "5",
            "S5": "11",
            "S6": "10",
            "S7": "6",
            "S8": "5",
            "S9": "8"
          },
          "C27": {
            "S0": "10",
            "S1": "9",
            "S2": "8",
            "S3": "4",
            "S4": "5",
            "S5": "13",
            "S6": "9",
            "S7": "8",
            "S8": "7",
            "S9": "5"
          },
          "C28": {
            "S0": "12",
            "S1": "11",
            "S2": "7",
            "S3": "6",
            "S4": "5",
            "S5": "12",
            "S6": "11",
            "S7": "10",
            "S8": "6",
            "S9": "5"
          },
          "C29": {
            "S0": "14",
            "S1": "10",
            "S2": "9",
            "S3": "8",
            "S4": "4",
            "S5": "14",
            "S6": "13",
            "S7": "9",
            "S8": "8",
            "S9": "7"
          },
          "C3": {
            "S0": "4",
            "S1": "3",
            "S2": "4",
            "S3": "4",
            "S4": "7",
            "S5": "11",
            "S6": "7",
            "S7": "8",
            "S8": "11",
            "S9": "11"
          },
          "C30": {
            "S0": "4",
            "S1": "7",
            "S2": "10",
            "S3": "10",
            "S4": "13",
            "S5": "5",
            "S6": "5",
            "S7": "8",
            "S8": "11",
            "S9": "11"
          },
          "C31": {
            "S0": "6",
            "S1": "7",
            "S2": "7",
            "S3": "10",
            "S4": "13",
            "S5": "4",
            "S6": "5",
            "S7": "8",
            "S8": "8",
            "S9": "11"
          },
          "C32": {
            "S0": "8",
            "S1": "4",
            "S2": "7",
            "S3": "10",
            "S4": "10",
            "S5": "6",
            "S6": "5",
            "S7": "5",
            "S8": "8",
            "S9": "11"
          },
          "C33": {
            "S0": "7",
            "S1": "6",
            "S2": "7",
            "S3": "7",
            "S4": "10",
            "S5": "8",
            "S6": "4",
            "S7": "5",
            "S8": "8",
            "S9": "8"
          },
          "C34": {
            "S0": "9",
            "S1": "8",
            "S2": "4",
            "S3": "7",
            "S4": "10",
            "S5": "7",
            "S6": "6",
            "S7": "5",
            "S8": "5",
            "S9": "8"
          },
          "C35": {
            "S0": "11",
            "S1": "7",
            "S2": "6",
            "S3": "7",
            "S4": "7",
            "S5": "9",
            "S6": "8",
            "S7": "4",
            "S8": "5",
            "S9": "8"
          },
          "C36": {
            "S0": "10",
            "S1": "9",
            "S2": "8",
            "S3": "4",
            "S4": "7",
            "S5": "11",
            "S6": "7",
            "S7": "6",
            "S8": "5",
            "S9": "5"
          },
          "C37": {
            "S0": "12",
            "S1": "11",
            "S2": "7",
            "S3": "6",
            "S4": "7",
            "S5": "10",
            "S6": "9",
            "S7": "8",
            "S8": "4",
            "S9": "5"
          },
          "C38": {
            "S0": "14",
            "S1": "10",
            "S2": "9",
            "S3": "8",
            "S4": "4",
            "S5": "12",
            "S6": "11",
            "S7": "7",
            "S8": "6",
            "S9": "5"
          },
          "C39": {
            "S0": "13",
            "S1": "12",
            "S2": "11",
            "S3": "7",
            "S4": "6",
            "S5": "14",
            "S6": "10",
            "S7": "9",
            "S8": "8",
            "S9": "4"
          },
          "C4": {
            "S0": "6",
            "S1": "5",
            "S2": "1",
            "S3": "4",
            "S4": "7",
            "S5": "10",
            "S6": "9",
            "S7": "8",
            "S8": "8",
            "S9": "11"
          },
          "C40": {
            "S0": "6",
            "S1": "9",
            "S2": "9",
            "S3": "12",
            "S4": "15",
            "S5": "2",
            "S6": "5",
            "S7": "8",
            "S8": "8",
            "S9": "11"
          },
          "C41": {
            "S0": "8",
            "S1": "6",
            "S2": "9",
            "S3": "12",
            "S4": "12",
            "S5": "4",
            "S6": "5",
            "S7": "5",
            "S8": "8",
            "S9": "11"
          },
          "C42": {
            "S0": "7",
            "S1": "6",
            "S2": "9",
            "S3": "9",
            "S4": "12",
            "S5": "6",
            "S6": "2",
            "S7": "5",
            "S8": "8",
            "S9": "8"
          },
          "C43": {
            "S0": "9",
            "S1": "8",
            "S2": "6",
            "S3": "9",
            "S4": "12",
            "S5": "5",
            "S6": "4",
            "S7": "5",
            "S8": "5",
            "S9": "8"
          },
          "C44": {
            "S0": "11",
            "S1": "7",
            "S2": "6",
            "S3": "9",
            "S4": "9",
            "S5": "7",
            "S6": "6",
            "S7": "2",
            "S8": "5",
            "S9": "8"
          },
          "C45": {
            "S0": "10",
            "S1": "9",
            "S2": "8",
            "S3": "6",
            "S4": "9",
            "S5": "9",
            "S6": "5",
            "S7": "4",
            "S8": "5",
            "S9": "5"
          },
          "C46": {
            "S0": "12",
            "S1": "11",
            "S2": "7",
            "S3": "6",
            "S4": "9",
            "S5": "8",
            "S6": "7",
            "S7": "6",
            "S8": "2",
            "S9": "5"
          },
          "C47": {
            "S0": "14",
            "S1": "10",
            "S2": "9",
            "S3": "8",
            "S4": "6",
            "S5": "10",
            "S6": "9",
            "S7": "5",
            "S8": "4",
            "S9": "5"
          },
          "C48": {
            "S0": "13",
            "S1": "12",
            "S2": "11",
            "S3": "7",
            "S4": "6",
            "S5": "12",
            "S6": "8",
            "S7": "7",
            "S8": "6",
            "S9": "2"
          },
          "C49": {
            "S0": "15",
            "S1": "14",
            "S2": "10",
            "S3": "9",
            "S4": "8",
            "S5": "11",
            "S6": "10",
            "S7": "9",
            "S8": "5",
            "S9": "4"
          },
          "C5": {
            "S0": "8",
            "S1": "4",
            "S2": "3",
            "S3": "4",
            "S4": "4",
            "S5": "12",
            "S6": "11",
            "S7": "7",
            "S8": "8",
            "S9": "11"
          },
          "C50": {
            "S0": "8",
            "S1": "8",
            "S2": "11",
            "S3": "14",
            "S4": "14",
            "S5": "2",
            "S6": "5",
            "S7": "5",
            "S8": "8",
            "S9": "11"
          },
          "C51": {
            "S0": "7",
            "S1": "8",
            "S2": "11",
            "S3": "11",
            "S4": "14",
            "S5": "4",
            "S6": "2",
            "S7": "5",
            "S8": "8",
            "S9": "8"
          },
          "C52": {
            "S0": "9",
            "S1": "8",
            "S2": "8",
            "S3": "11",
            "S4": "14",
            "S5": "3",
            "S6": "2",
            "S7": "5",
            "S8": "5",
            "S9": "8"
          },
          "C53": {
            "S0": "11",
            "S1": "7",
            "S2": "8",
            "S3": "11",
            "S4": "11",
            "S5": "5",
            "S6": "4",
            "S7": "2",
            "S8": "5",
            "S9": "8"
          },
          "C54": {
            "S0": "10",
            "S1": "9",
            "S2": "8",
            "S3": "8",
            "S4": "11",
            "S5": "7",
            "S6": "3",
            "S7": "2",
            "S8": "5",
            "S9": "5"
          },
          "C55": {
            "S0": "12",
            "S1": "11",
            "S2": "7",
            "S3": "8",
            "S4": "11",
            "S5": "6",
            "S6": "5",
            "S7": "4",
            "S8": "2",
            "S9": "5"
          },
          "C56": {
            "S0": "14",
            "S1": "10",
            "S2": "9",
            "S3": "8",
            "S4": "8",
            "S5": "8",
            "S6": "7",
            "S7": "3",
            "S8": "2",
            "S9": "5"
          },
          "C57": {
            "S0": "13",
            "S1": "12",
            "S2": "11",
            "S3": "7",
            "S4": "8",
            "S5": "10",
            "S6": "6",
            "S7": "5",
            "S8": "4",
            "S9": "2"
          },
          "C58": {
            "S0": "15",
            "S1": "14",
            "S2": "10",
            "S3": "9",
            "S4": "8",
            "S5": "9",
            "S6": "8",
            "S7": "7",
            "S8": "3",
            "S9": "2"
          },
          "C59": {
            "S0": "17",
            "S1": "13",
            "S2": "12",
            "S3": "11",
            "S4": "7",
            "S5": "11",
            "S6": "10",
            "S7": "6",
            "S8": "5",
            "S9": "4"
          },
          "C6": {
            "S0": "7",
            "S1": "6",
            "S2": "5",
            "S3": "1",
            "S4": "4",
            "S5": "14",
            "S6": "10",
            "S7": "9",
            "S8": "8",
            "S9": "8"
          },
          "C60": {
            "S0": "7",
            "S1": "10",
            "S2": "13",
            "S3": "13",
            "S4": "16",
            "S5": "4",
            "S6": "4",
            "S7": "7",
            "S8": "10",
            "S9": "10"
          },
          "C61": {
            "S0": "9",
            "S1": "10",
            "S2": "10",
            "S3": "13",
            "S4": "16",
            "S5": "3",
            "S6": "4",
            "S7": "7",
            "S8": "7",
            "S9": "10"
          },
          "C62": {
            "S0": "11",
            "S1": "7",
            "S2": "10",
            "S3": "13",
            "S4": "13",
            "S5": "5",
            "S6": "4",
            "S7": "4",
            "S8": "7",
            "S9": "10"
          },
          "C63": {
            "S0": "10",
            "S1": "9",
            "S2": "10",
            "S3": "10",
            "S4": "13",
            "S5": "7",
            "S6": "3",
            "S7": "4",
            "S8": "7",
            "S9": "7"
          },
          "C64": {
            "S0": "12",
            "S1": "11",
            "S2": "7",
            "S3": "10",
            "S4": "13",
            "S5": "6",
            "S6": "5",
            "S7": "4",
            "S8": "4",
            "S9": "7"
          },
          "C65": {
            "S0": "14",
            "S1": "10",
            "S2": "9",
            "S3": "10",
            "S4": "10",
            "S5": "8",
            "S6": "7",
            "S7": "3",
            "S8": "4",
            "S9": "7"
          },
          "C66": {
            "S0": "13",
            "S1": "12",
            "S2": "11",
            "S3": "7",
            "S4": "10",
            "S5": "10",
            "S6": "6",
            "S7": "5",
            "S8": "4",
            "S9": "4"
          },
          "C67": {
            "S0": "15",
            "S1": "14",
            "S2": "10",
            "S3": "9",
            "S4": "10",
            "S5": "9",
            "S6": "8",
            "S7": "7",
            "S8": "3",
            "S9": "4"
          },
          "C68": {
            "S0": "17",
            "S1": "13",
            "S2": "12",
            "S3": "11",
            "S4": "7",
            "S5": "11",
            "S6": "10",
            "S7": "6",
            "S8": "5",
            "S9": "4"
          },
          "C69": {
            "S0": "16",
            "S1": "15",
            "S2": "14",
            "S3": "10",
            "S4": "9",
            "S5": "13",
            "S6": "9",
            "S7": "8",
            "S8": "7",
            "S9": "3"
          },
          "C7": {
            "S0": "9",
            "S1": "8",
            "S2": "4",
            "S3": "3",
            "S4": "4",
            "S5": "13",
            "S6": "12",
            "S7": "11",
            "S8": "7",
            "S9": "8"
          },
          "C70": {
            "S0": "9",
            "S1": "12",
            "S2": "12",
            "S3": "15",
            "S4": "18",
            "S5": "3",
            "S6": "6",
            "S7": "9",
            "S8": "9",
            "S9": "12"
          },
          "C71": {
            "S0": "11",
            "S1": "9",
            "S2": "12",
            "S3": "15",
            "S4": "15",
            "S5": "5",
            "S6": "6",
            "S7": "6",
            "S8": "9",
            "S9": "12"
          },
          "C72": {
            "S0": "10",
            "S1": "9",
            "S2": "12",
            "S3": "12",
            "S4": "15",
            "S5": "7",
            "S6": "3",
            "S7": "6",
            "S8": "9",
            "S9": "9"
          },
          "C73": {
            "S0": "12",
            "S1": "11",
            "S2": "9",
            "S3": "12",
            "S4": "15",
            "S5": "6",
            "S6": "5",
            "S7": "6",
            "S8": "6",
            "S9": "9"
          },
          "C74": {
            "S0": "14",
            "S1": "10",
            "S2": "9",
            "S3": "12",
            "S4": "12",
            "S5": "8",
            "S6": "7",
            "S7": "3",
            "S8": "6",
            "S9": "9"
          },
          "C75": {
            "S0": "13",
            "S1": "12",
            "S2": "11",
            "S3": "9",
            "S4": "12",
            "S5": "10",
            "S6": "6",
            "S7": "5",
            "S8": "6",
            "S9": "6"
          },
          "C76": {
            "S0": "15",
            "S1": "14",
            "S2": "10",
            "S3": "9",
            "S4": "12",
            "S5": "9",
            "S6": "8",
            "S7": "7",
            "S8": "3",
            "S9": "6"
          },
          "C77": {
            "S0": "17",
            "S1": "13",
            "S2": "12",
            "S3": "11",
            "S4": "9",
            "S5": "11",
            "S6": "10",
            "S7": "6",
            "S8": "5",
            "S9": "6"
          },
          "C78": {
            "S0": "16",
            "S1": "15",
            "S2": "14",
            "S3": "10",
            "S4": "9",
            "S5": "13",
            "S6": "9",
            "S7": "8",
            "S8": "7",
            "S9": "3"
          },
          "C79": {
            "S0": "18",
            "S1": "17",
            "S2": "13",
            "S3": "12",
            "S4": "11",
            "S5": "12",
            "S6": "11",
            "S7": "10",
            "S8": "6",
            "S9": "5"
          },
          "C8": {
            "S0": "11",
            "S1": "7",
            "S2": "6",
            "S3": "5",
            "S4": "1",
            "S5": "15",
            "S6": "14",
            "S7": "10",
            "S8": "9",
            "S9": "8"
          },
          "C80": {
            "S0": "11",
            "S1": "11",
            "S2": "14",
            "S3": "17",
            "S4": "17",
            "S5": "5",
            "S6": "8",
            "S7": "8",
            "S8": "11",
            "S9": "14"
          },
          "C81": {
            "S0": "10",
            "S1": "11",
            "S2": "14",
            "S3": "14",
            "S4": "17",
            "S5": "7",
            "S6": "5",
            "S7": "8",
            "S8": "11",
            "S9": "11"
          },
          "C82": {
            "S0": "12",
            "S1": "11",
            "S2": "11",
            "S3": "14",
            "S4": "17",
            "S5": "6",
            "S6": "5",
            "S7": "8",
            "S8": "8",
            "S9": "11"
          },
          "C83": {
            "S0": "14",
            "S1": "10",
            "S2": "11",
            "S3": "14",
            "S4": "14",
            "S5": "8",
            "S6": "7",
            "S7": "5",
            "S8": "8",
            "S9": "11"
          },
          "C84": {
            "S0": "13",
            "S1": "12",
            "S2": "11",
            "S3": "11",
            "S4": "14",
            "S5": "10",
            "S6": "6",
            "S7": "5",
            "S8": "8",
            "S9": "8"
          },
          "C85": {
            "S0": "15",
            "S1": "14",
            "S2": "10",
            "S3": "11",
            "S4": "14",
            "S5": "9",
            "S6": "8",
            "S7": "7",
            "S8": "5",
            "S9": "8"
          },
          "C86": {
            "S0": "17",
            "S1": "13",
            "S2": "12",
            "S3": "11",
            "S4": "11",
            "S5": "11",
            "S6": "10",
            "S7": "6",
            "S8": "5",
            "S9": "8"
          },
          "C87": {
            "S0": "16",
            "S1": "15",
            "S2": "14",
            "S3": "10",
            "S4": "11",
            "S5": "13",
            "S6": "9",
            "S7": "8",
            "S8": "7",
            "S9": "5"
          },
          "C88": {
            "S0": "18",
            "S1": "17",
            "S2": "13",
            "S3": "12",
            "S4": "11",
            "S5": "12",
            "S6": "11",
            "S7": "10",
            "S8": "6",
            "S9": "5"
          },
          "C89": {
            "S0": "20",
            "S1": "16",
            "S2": "15",
            "S3": "14",
            "S4": "10",
            "S5": "14",
            "S6": "13",
            "S7": "9",
            "S8": "8",
            "S9": "7"
          },
          "C9": {
            "S0": "10",
            "S1": "9",
            "S2": "8",
            "S3": "4",
            "S4": "3",
            "S5": "17",
            "S6": "13",
            "S7": "12",
            "S8": "11",
            "S9": "7"
          },
          "C90": {
            "S0": "10",
            "S1": "13",
            "S2": "16",
            "S3": "16",
            "S4": "19",
            "S5": "7",
            "S6": "7",
            "S7": "10",
            "S8": "13",
            "S9": "13"
          },
          "C91": {
            "S0": "12",
            "S1": "13",
            "S2": "13",
            "S3": "16",
            "S4": "19",
            "S5": "6",
            "S6": "7",
            "S7": "10",
            "S8": "10",
            "S9": "13"
          },
          "C92": {
            "S0": "14",
            "S1": "10",
            "S2": "13",
            "S3": "16",
            "S4": "16",
            "S5": "8",
            "S6": "7",
            "S7": "7",
            "S8": "10",
            "S9": "13"
          },
          "C93": {
            "S0": "13",
            "S1": "12",
            "S2": "13",
            "S3": "13",
            "S4": "16",
            "S5": "10",
            "S6": "6",
            "S7": "7",
            "S8": "10",
            "S9": "10"
          },
          "C94": {
            "S0": "15",
            "S1": "14",
            "S2": "10",
            "S3": "13",
            "S4": "16",
            "S5": "9",
            "S6": "8",
            "S7": "7",
            "S8": "7",
            "S9": "10"
          },
          "C95": {
            "S0": "17",
            "S1": "13",
            "S2": "12",
            "S3": "13",
            "S4": "13",
            "S5": "11",
            "S6": "10",
            "S7": "6",
            "S8": "7",
            "S9": "10"
          },
          "C96": {
            "S0": "16",
            "S1": "15",
            "S2": "14",
            "S3": "10",
            "S4": "13",
            "S5": "13",
            "S6": "9",
            "S7": "8",
            "S8": "7",
            "S9": "7"
          },
          "C97": {
            "S0": "18",
            "S1": "17",
            "S2": "13",
            "S3": "12",
            "S4": "13",
            "S5": "12",
            "S6": "11",
            "S7": "10",
            "S8": "6",
            "S9": "7"
          },
          "C98": {
            "S0": "20",
            "S1": "16",
            "S2": "15",
            "S3": "14",
            "S4": "10",
            "S5": "14",
            "S6": "13",
            "S7": "9",
            "S8": "8",
            "S9": "7"
          },
          "C99": {
            "S0": "19",
            "S1": "18",
            "S2": "17",
            "S3": "13",
            "S4": "12",
            "S5": "16",
            "S6": "12",
            "S7": "11",
            "S8": "10",
            "S9": "6"
          }
        },
        "selected": [
          "S0",
          "S1",
          "S2",
          "S3",
          "S4",
          "S5",
          "S6",
          "S7"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S0"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          },
          {
            "client_id": "C10",
            "site_id": "S2"
          },
          {
            "client_id": "C11",
            "site_id": "S3"
          },
          {
            "client_id": "C12",
            "site_id": "S4"
          },
          {
            "client_id": "C13",
            "site_id": "S5"
          },
          {
            "client_id": "C14",
            "site_id": "S6"
          },
          {
            "client_id": "C15",
            "site_id": "S7"
          },
          {
            "client_id": "C16",
            "site_id": "S0"
          },
          {
            "client_id": "C17",
            "site_id": "S1"
          },
          {
            "client_id": "C18",
            "site_id": "S2"
          },
          {
            "client_id": "C19",
            "site_id": "S3"
          },
          {
            "client_id": "C2",
            "site_id": "S2"
          },
          {
            "client_id": "C20",
            "site_id": "S4"
          },
          {
            "client_id": "C21",
            "site_id": "S5"
          },
          {
            "client_id": "C22",
            "site_id": "S6"
          },
          {
            "client_id": "C23",
            "site_id": "S7"
          },
          {
            "client_id": "C24",
            "site_id": "S0"
          },
          {
            "client_id": "C25",
            "site_id": "S1"
          },
          {
            "client_id": "C26",
            "site_id": "S2"
          },
          {
            "client_id": "C27",
            "site_id": "S3"
          },
          {
            "client_id": "C28",
            "site_id": "S4"
          },
          {
            "client_id": "C29",
            "site_id": "S5"
          },
          {
            "client_id": "C3",
            "site_id": "S3"
          },
          {
            "client_id": "C30",
            "site_id": "S6"
          },
          {
            "client_id": "C31",
            "site_id": "S7"
          },
          {
            "client_id": "C32",
            "site_id": "S0"
          },
          {
            "client_id": "C33",
            "site_id": "S1"
          },
          {
            "client_id": "C34",
            "site_id": "S2"
          },
          {
            "client_id": "C35",
            "site_id": "S3"
          },
          {
            "client_id": "C36",
            "site_id": "S4"
          },
          {
            "client_id": "C37",
            "site_id": "S5"
          },
          {
            "client_id": "C38",
            "site_id": "S6"
          },
          {
            "client_id": "C39",
            "site_id": "S7"
          },
          {
            "client_id": "C4",
            "site_id": "S4"
          },
          {
            "client_id": "C40",
            "site_id": "S0"
          },
          {
            "client_id": "C41",
            "site_id": "S1"
          },
          {
            "client_id": "C42",
            "site_id": "S2"
          },
          {
            "client_id": "C43",
            "site_id": "S3"
          },
          {
            "client_id": "C44",
            "site_id": "S4"
          },
          {
            "client_id": "C45",
            "site_id": "S5"
          },
          {
            "client_id": "C46",
            "site_id": "S6"
          },
          {
            "client_id": "C47",
            "site_id": "S7"
          },
          {
            "client_id": "C48",
            "site_id": "S0"
          },
          {
            "client_id": "C49",
            "site_id": "S1"
          },
          {
            "client_id": "C5",
            "site_id": "S5"
          },
          {
            "client_id": "C50",
            "site_id": "S2"
          },
          {
            "client_id": "C51",
            "site_id": "S3"
          },
          {
            "client_id": "C52",
            "site_id": "S4"
          },
          {
            "client_id": "C53",
            "site_id": "S5"
          },
          {
            "client_id": "C54",
            "site_id": "S6"
          },
          {
            "client_id": "C55",
            "site_id": "S7"
          },
          {
            "client_id": "C56",
            "site_id": "S0"
          },
          {
            "client_id": "C57",
            "site_id": "S1"
          },
          {
            "client_id": "C58",
            "site_id": "S2"
          },
          {
            "client_id": "C59",
            "site_id": "S3"
          },
          {
            "client_id": "C6",
            "site_id": "S6"
          },
          {
            "client_id": "C60",
            "site_id": "S4"
          },
          {
            "client_id": "C61",
            "site_id": "S5"
          },
          {
            "client_id": "C62",
            "site_id": "S6"
          },
          {
            "client_id": "C63",
            "site_id": "S7"
          },
          {
            "client_id": "C64",
            "site_id": "S0"
          },
          {
            "client_id": "C65",
            "site_id": "S1"
          },
          {
            "client_id": "C66",
            "site_id": "S2"
          },
          {
            "client_id": "C67",
            "site_id": "S3"
          },
          {
            "client_id": "C68",
            "site_id": "S4"
          },
          {
            "client_id": "C69",
            "site_id": "S5"
          },
          {
            "client_id": "C7",
            "site_id": "S7"
          },
          {
            "client_id": "C70",
            "site_id": "S6"
          },
          {
            "client_id": "C71",
            "site_id": "S7"
          },
          {
            "client_id": "C72",
            "site_id": "S0"
          },
          {
            "client_id": "C73",
            "site_id": "S1"
          },
          {
            "client_id": "C74",
            "site_id": "S2"
          },
          {
            "client_id": "C75",
            "site_id": "S3"
          },
          {
            "client_id": "C76",
            "site_id": "S4"
          },
          {
            "client_id": "C77",
            "site_id": "S5"
          },
          {
            "client_id": "C78",
            "site_id": "S6"
          },
          {
            "client_id": "C79",
            "site_id": "S7"
          },
          {
            "client_id": "C8",
            "site_id": "S0"
          },
          {
            "client_id": "C80",
            "site_id": "S0"
          },
          {
            "client_id": "C81",
            "site_id": "S1"
          },
          {
            "client_id": "C82",
            "site_id": "S2"
          },
          {
            "client_id": "C83",
            "site_id": "S3"
          },
          {
            "client_id": "C84",
            "site_id": "S4"
          },
          {
            "client_id": "C85",
            "site_id": "S5"
          },
          {
            "client_id": "C86",
            "site_id": "S6"
          },
          {
            "client_id": "C87",
            "site_id": "S7"
          },
          {
            "client_id": "C88",
            "site_id": "S0"
          },
          {
            "client_id": "C89",
            "site_id": "S1"
          },
          {
            "client_id": "C9",
            "site_id": "S1"
          },
          {
            "client_id": "C90",
            "site_id": "S2"
          },
          {
            "client_id": "C91",
            "site_id": "S3"
          },
          {
            "client_id": "C92",
            "site_id": "S4"
          },
          {
            "client_id": "C93",
            "site_id": "S5"
          },
          {
            "client_id": "C94",
            "site_id": "S6"
          },
          {
            "client_id": "C95",
            "site_id": "S7"
          },
          {
            "client_id": "C96",
            "site_id": "S0"
          },
          {
            "client_id": "C97",
            "site_id": "S1"
          },
          {
            "client_id": "C98",
            "site_id": "S2"
          },
          {
            "client_id": "C99",
            "site_id": "S3"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "zero_demand",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiWmVybyBkZW1hbmQgcmVtYWlucyBleHBsaWNpdGx5IGFzc2lnbmVkIiwgImNvc3RfdW5pdHMiOiAiY29zdCB1bml0cyBwZXIgZGVtYW5kIHVuaXQiLCAiZGVtYW5kX3VuaXRzIjogImRlbWFuZCB1bml0cyIsICJwcm92ZW5hbmNlIjogIkdlbmVyYXRlZCBjb21wdXRhdGlvbmFsIGNvbnRyb2w7IG5vIGN1c3RvbWVyIG9yIGdlb2dyYXBoaWMgZGF0YS4iLCAiayI6IDEsICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwwCkMxLDAK"
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwwLGZhbHNlClMxLDAsZmFsc2UK"
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDkKQzAsUzEsMwpDMSxTMCw4CkMxLFMxLDQK"
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMAo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzAKQzEsUzAK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S0"
          ],
          "issues": [],
          "exact_cost": "0",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            },
            {
              "client_id": "C1",
              "site_id": "S0"
            }
          ],
          "loads": {
            "S0": "0"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S0"
          ],
          "issues": [],
          "exact_cost": "0",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            },
            {
              "client_id": "C1",
              "site_id": "S0"
            }
          ],
          "loads": {
            "S0": "0"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S0"
            ],
            "issues": [],
            "exact_cost": "0",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S0"
              },
              {
                "client_id": "C1",
                "site_id": "S0"
              }
            ],
            "loads": {
              "S0": "0"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "0",
          "independently_known_optimum": "0",
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Zero demand remains explicitly assigned",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "0",
          "C1": "0"
        },
        "sites": {
          "S0": {
            "capacity": "0",
            "required": false
          },
          "S1": {
            "capacity": "0",
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "9",
            "S1": "3"
          },
          "C1": {
            "S0": "8",
            "S1": "4"
          }
        },
        "selected": [
          "S0"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S0"
          },
          {
            "client_id": "C1",
            "site_id": "S0"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "bom_study.json",
      "files": [
        {
          "name": "study.json",
          "base64": "77u/eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "bom_clients.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "77u/Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "reordered_quoted_crlf_clients.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "ZGVtYW5kLGNsaWVudF9pZA0KMSxDMQ0KMTAsQzANCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "bom_sites.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "77u/c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "reordered_quoted_crlf_sites.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "cmVxdWlyZWQsY2FwYWNpdHksc2l0ZV9pZA0KZmFsc2UsLFMxDQpmYWxzZSwsUzANCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "bom_costs.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "77u/Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "reordered_quoted_crlf_costs.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "dW5pdF9jb3N0LHNpdGVfaWQsY2xpZW50X2lkDQowLFMxLEMxDQoxMCxTMCxDMQ0KNCxTMSxDMA0KMCxTMCxDMA0K"
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "bom_selected.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "77u/c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "reordered_quoted_crlf_selected.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZA0KUzENCg=="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "bom_assignments.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "77u/Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "reordered_quoted_crlf_assignments.csv",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "c2l0ZV9pZCxjbGllbnRfaWQNClMxLEMxDQpTMSxDMA0K"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "duplicate_client",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMCwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "missing_cost",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAK"
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "negative_demand",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwtMQpDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "exponent",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxZTIKQzEsMQo="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "zero_denominator",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxLzAKQzEsMQo="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "too_large_number",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCw2ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4NjM1MzY0MjI5MTIKQzEsMQo="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "duplicate_header",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGNsaWVudF9pZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "extra_column",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZCxoaWRkZW4KQzAsMTAseApDMSwxLHgK"
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "short_row",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "long_row",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMCxleHRyYQpDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "unclosed_quote",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZAoiQzAsMTAKQzEsMQo="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "leading_blank",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "CmNsaWVudF9pZCxkZW1hbmQKQzAsMTAKQzEsMQo="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "quoted_id_newline",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZAoiQzAKIiwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "quoted_number_newline",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwiMTAKIgpDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "no_assignments",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Unassigned clients: C0, C1"
          ],
          "exact_cost": null,
          "assignments": [],
          "loads": null
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "nearest_reassignment",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [],
        "unsupported": []
      }
    },
    {
      "name": "duplicate_assignment",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzAsUzEK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Unknown or duplicate assignment client: C0",
            "Unassigned clients: C1"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C0",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "nearest_reassignment",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C0",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "unknown_assignment",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsWFgKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Assignment uses an unknown or closed site: XX"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "XX"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "nearest_reassignment",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "XX"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "closed_assignment",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzAKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Assignment uses an unknown or closed site: S0"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S0"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "nearest_reassignment",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S0"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "duplicate_selected",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQpTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Duplicate selected site IDs"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "nearest_reassignment": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Duplicate selected site IDs"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "comparison": {
          "best_origin": null,
          "best_checked_plan": null,
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": null,
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1",
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "unknown_selected",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApYWAo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [
            "XX"
          ],
          "issues": [
            "Unknown selected site IDs: XX",
            "Assignment uses an unknown or closed site: S1",
            "Assignment uses an unknown or closed site: S1"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "nearest_reassignment": null,
        "comparison": {
          "best_origin": null,
          "best_checked_plan": null,
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": null,
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "XX"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "empty_selected",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZAo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [],
          "issues": [
            "Selected site count violates exactly_k=1",
            "Assignment uses an unknown or closed site: S1",
            "Assignment uses an unknown or closed site: S1"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "nearest_reassignment": null,
        "comparison": {
          "best_origin": null,
          "best_checked_plan": null,
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": null,
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "required_missing",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsdHJ1ZQpTMSwsZmFsc2UK"
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Required sites missing: S0"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "nearest_reassignment": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Required sites missing: S0"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "comparison": {
          "best_origin": null,
          "best_checked_plan": null,
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": null,
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": true
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "bad_boolean",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsRmFsc2UKUzEsLEZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "negative_capacity",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwtMSxmYWxzZQpTMSwsZmFsc2UK"
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "exact_count",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAyLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "submitted_plan_infeasible",
        "submitted": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Selected site count violates exactly_k=2"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "nearest_reassignment": {
          "valid": false,
          "selected_ids": [
            "S1"
          ],
          "issues": [
            "Selected site count violates exactly_k=2"
          ],
          "exact_cost": null,
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": null
        },
        "comparison": {
          "best_origin": null,
          "best_checked_plan": null,
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": null,
          "independently_known_optimum": null,
          "improvement_over_submitted": null
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 2,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "at_most",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAyLCAic2VsZWN0aW9uX3J1bGUiOiAiYXRfbW9zdF9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 2,
          "selection_rule": "at_most_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "extra_constraint",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogWyJtaW5pbXVtIHV0aWxpemF0aW9uIDAuNSJdfQ=="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "unsupported_model",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": [
            "minimum utilization 0.5"
          ]
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": [
          "Additional constraints are not implemented: minimum utilization 0.5"
        ]
      }
    },
    {
      "name": "minimax",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAibWluaW1heCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "unsupported_model",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "minimax",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": [
          "Only weighted assignment cost is implemented"
        ]
      }
    },
    {
      "name": "unknown_selection_rule",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAidW5rbm93biIsICJhc3NpZ25tZW50X3J1bGUiOiAid2hvbGVfY2xpZW50X3RvX29uZV9vcGVuX3NpdGUiLCAib2JqZWN0aXZlIjogIndlaWdodGVkX3N1bV9hc3NpZ25tZW50X2Nvc3QiLCAiYWRkaXRpb25hbF9jb25zdHJhaW50cyI6IFtdfQ=="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "unsupported_model",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "unknown",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": [
          "Unsupported selection rule"
        ]
      }
    },
    {
      "name": "string_k",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAiMSIsICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "float_k",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLjAsICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "bool_k",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiB0cnVlLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "zero_k",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAwLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "extra_study_field",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW10sICJvdGhlciI6ICJoaWRkZW4ifQ=="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "duplicate_json",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAiayI6IDIsICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "nan_json",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiBOYU4sICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "exponent_k",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxZTAsICJzZWxlY3Rpb25fcnVsZSI6ICJleGFjdGx5X2siLCAiYXNzaWdubWVudF9ydWxlIjogIndob2xlX2NsaWVudF90b19vbmVfb3Blbl9zaXRlIiwgIm9iamVjdGl2ZSI6ICJ3ZWlnaHRlZF9zdW1fYXNzaWdubWVudF9jb3N0IiwgImFkZGl0aW9uYWxfY29uc3RyYWludHMiOiBbXX0="
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "json_trailing",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119IGZhbHNl"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "input_invalid",
        "submitted": null,
        "nearest_reassignment": null,
        "comparison": null
      },
      "normalized": null
    },
    {
      "name": "identity_01",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZAowMSwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CjAxLFMwLDAKMDEsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKMDEsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "01",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "01",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "01",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "01": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "01": {
            "S0": "0",
            "S1": "4"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "01",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "identity_S0",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApTMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0ClMwLFMwLDAKUzAsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKUzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C1",
              "site_id": "S1"
            },
            {
              "client_id": "S0",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C1",
              "site_id": "S1"
            },
            {
              "client_id": "S0",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C1",
                "site_id": "S1"
              },
              {
                "client_id": "S0",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C1": "1",
          "S0": "10"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C1": {
            "S0": "10",
            "S1": "0"
          },
          "S0": {
            "S0": "0",
            "S1": "4"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C1",
            "site_id": "S1"
          },
          {
            "client_id": "S0",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "identity_constructor",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApjb25zdHJ1Y3RvciwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CmNvbnN0cnVjdG9yLFMwLDAKY29uc3RydWN0b3IsUzEsNApDMSxTMCwxMApDMSxTMSwwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKY29uc3RydWN0b3IsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C1",
              "site_id": "S1"
            },
            {
              "client_id": "constructor",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C1",
              "site_id": "S1"
            },
            {
              "client_id": "constructor",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C1",
                "site_id": "S1"
              },
              {
                "client_id": "constructor",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C1": "1",
          "constructor": "10"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C1": {
            "S0": "10",
            "S1": "0"
          },
          "constructor": {
            "S0": "0",
            "S1": "4"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C1",
            "site_id": "S1"
          },
          {
            "client_id": "constructor",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "identity_toString",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxMApDMSwxCg=="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKdG9TdHJpbmcsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsdG9TdHJpbmcsNApDMSxTMCwxMApDMSx0b1N0cmluZywwCg=="
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZAp0b1N0cmluZwo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsdG9TdHJpbmcKQzEsdG9TdHJpbmcK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "toString"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "toString"
            },
            {
              "client_id": "C1",
              "site_id": "toString"
            }
          ],
          "loads": {
            "toString": "11"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "toString"
          ],
          "issues": [],
          "exact_cost": "40",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "toString"
            },
            {
              "client_id": "C1",
              "site_id": "toString"
            }
          ],
          "loads": {
            "toString": "11"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "toString"
            ],
            "issues": [],
            "exact_cost": "40",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "toString"
              },
              {
                "client_id": "C1",
                "site_id": "toString"
              }
            ],
            "loads": {
              "toString": "11"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "40",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "10",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "toString": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "toString": "4"
          },
          "C1": {
            "S0": "10",
            "toString": "0"
          }
        },
        "selected": [
          "toString"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "toString"
          },
          {
            "client_id": "C1",
            "site_id": "toString"
          }
        ],
        "unsupported": []
      }
    },
    {
      "name": "wide_intermediate_exact_cost",
      "files": [
        {
          "name": "study.json",
          "base64": "eyJzY2hlbWEiOiAiZmFjaWxpdHktYXNzaWdubWVudC1yZXZpZXctdjEiLCAidGl0bGUiOiAiR2VuZXJhdGVkIHdlaWdodGVkIGZhY2lsaXR5IHJldmlldyIsICJjb3N0X3VuaXRzIjogImNvc3QgdW5pdHMgcGVyIGRlbWFuZCB1bml0IiwgImRlbWFuZF91bml0cyI6ICJkZW1hbmQgdW5pdHMiLCAicHJvdmVuYW5jZSI6ICJHZW5lcmF0ZWQgY29tcHV0YXRpb25hbCBjb250cm9sOyBubyBjdXN0b21lciBvciBnZW9ncmFwaGljIGRhdGEuIiwgImsiOiAxLCAic2VsZWN0aW9uX3J1bGUiOiAiZXhhY3RseV9rIiwgImFzc2lnbm1lbnRfcnVsZSI6ICJ3aG9sZV9jbGllbnRfdG9fb25lX29wZW5fc2l0ZSIsICJvYmplY3RpdmUiOiAid2VpZ2h0ZWRfc3VtX2Fzc2lnbm1lbnRfY29zdCIsICJhZGRpdGlvbmFsX2NvbnN0cmFpbnRzIjogW119"
        },
        {
          "name": "clients.csv",
          "base64": "Y2xpZW50X2lkLGRlbWFuZApDMCwxNzAxNDExODM0NjA0NjkyMzE3MzE2ODczMDM3MTU4ODQxMDU3MjgKQzEsMQo="
        },
        {
          "name": "sites.csv",
          "base64": "c2l0ZV9pZCxjYXBhY2l0eSxyZXF1aXJlZApTMCwsZmFsc2UKUzEsLGZhbHNlCg=="
        },
        {
          "name": "costs.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQsdW5pdF9jb3N0CkMwLFMwLDAKQzAsUzEsMTcwMTQxMTgzNDYwNDY5MjMxNzMxNjg3MzAzNzE1ODg0MTA1NzI4CkMxLFMwLDEwCkMxLFMxLDAK"
        },
        {
          "name": "selected.csv",
          "base64": "c2l0ZV9pZApTMQo="
        },
        {
          "name": "assignments.csv",
          "base64": "Y2xpZW50X2lkLHNpdGVfaWQKQzAsUzEKQzEsUzEK"
        }
      ],
      "expected": {
        "status": "review_complete",
        "submitted": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "28948022309329048855892746252171976963317496166410141009864396001978282409984",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "170141183460469231731687303715884105729"
          }
        },
        "nearest_reassignment": {
          "valid": true,
          "selected_ids": [
            "S1"
          ],
          "issues": [],
          "exact_cost": "28948022309329048855892746252171976963317496166410141009864396001978282409984",
          "assignments": [
            {
              "client_id": "C0",
              "site_id": "S1"
            },
            {
              "client_id": "C1",
              "site_id": "S1"
            }
          ],
          "loads": {
            "S1": "170141183460469231731687303715884105729"
          }
        },
        "comparison": {
          "best_origin": "submitted",
          "best_checked_plan": {
            "valid": true,
            "selected_ids": [
              "S1"
            ],
            "issues": [],
            "exact_cost": "28948022309329048855892746252171976963317496166410141009864396001978282409984",
            "assignments": [
              {
                "client_id": "C0",
                "site_id": "S1"
              },
              {
                "client_id": "C1",
                "site_id": "S1"
              }
            ],
            "loads": {
              "S1": "170141183460469231731687303715884105729"
            }
          },
          "exact_lower_bound": "0",
          "lower_bound_scope": "Each client may use its cheapest candidate; opening count, required sites and capacities relaxed",
          "exact_gap": "28948022309329048855892746252171976963317496166410141009864396001978282409984",
          "independently_known_optimum": null,
          "improvement_over_submitted": "0"
        }
      },
      "normalized": {
        "study": {
          "schema": "facility-assignment-review-v1",
          "title": "Generated weighted facility review",
          "cost_units": "cost units per demand unit",
          "demand_units": "demand units",
          "provenance": "Generated computational control; no customer or geographic data.",
          "k": 1,
          "selection_rule": "exactly_k",
          "assignment_rule": "whole_client_to_one_open_site",
          "objective": "weighted_sum_assignment_cost",
          "additional_constraints": []
        },
        "clients": {
          "C0": "170141183460469231731687303715884105728",
          "C1": "1"
        },
        "sites": {
          "S0": {
            "capacity": null,
            "required": false
          },
          "S1": {
            "capacity": null,
            "required": false
          }
        },
        "costs": {
          "C0": {
            "S0": "0",
            "S1": "170141183460469231731687303715884105728"
          },
          "C1": {
            "S0": "10",
            "S1": "0"
          }
        },
        "selected": [
          "S1"
        ],
        "assignments": [
          {
            "client_id": "C0",
            "site_id": "S1"
          },
          {
            "client_id": "C1",
            "site_id": "S1"
          }
        ],
        "unsupported": []
      }
    }
  ],
  "scope": "Original generated bytes and current Python no-solver outputs; finite browser parity evidence, not a program proof."
}
