.color--neutral-black--has-hover {
  color: #14171A;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-black--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-black--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-black--has-hover {
  background-color: #14171A;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-black--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-black--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-black--has-hover {
  fill: #14171A;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-black--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-black--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-black--has-hover {
  border-color: #14171A;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-black--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-black--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.color--neutral-dark-gray--has-hover {
  color: #657786;
  transition: color 0.3s ease-in-out; }
  .color--neutral-dark-gray--has-hover:hover {
    color: color(neutral, black);
    cursor: pointer; }
  .color--neutral-dark-gray--has-hover:active {
    color: color(neutral, black);
    cursor: pointer; }

.bg-color--neutral-dark-gray--has-hover {
  background-color: #657786;
  transition: color 0.3s ease-in-out; }
  .bg-color--neutral-dark-gray--has-hover:hover {
    color: color(neutral, black);
    cursor: pointer; }
  .bg-color--neutral-dark-gray--has-hover:active {
    color: color(neutral, black);
    cursor: pointer; }

.fill-color--neutral-dark-gray--has-hover {
  fill: #657786;
  transition: color 0.3s ease-in-out; }
  .fill-color--neutral-dark-gray--has-hover:hover {
    color: color(neutral, black);
    cursor: pointer; }
  .fill-color--neutral-dark-gray--has-hover:active {
    color: color(neutral, black);
    cursor: pointer; }

.border-color--neutral-dark-gray--has-hover {
  border-color: #657786;
  transition: color 0.3s ease-in-out; }
  .border-color--neutral-dark-gray--has-hover:hover {
    color: color(neutral, black);
    cursor: pointer; }
  .border-color--neutral-dark-gray--has-hover:active {
    color: color(neutral, black);
    cursor: pointer; }

.color--neutral-light-gray--has-hover {
  color: #AAB8C2;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-light-gray--has-hover {
  background-color: #AAB8C2;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-light-gray--has-hover {
  fill: #AAB8C2;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-light-gray--has-hover {
  border-color: #AAB8C2;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.color--neutral-extra-light-gray--has-hover {
  color: #CCD6DD;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-extra-light-gray--has-hover {
  background-color: #CCD6DD;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-extra-light-gray--has-hover {
  fill: #CCD6DD;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-extra-light-gray--has-hover {
  border-color: #CCD6DD;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.color--neutral-extra-extra-light-gray--has-hover {
  color: #F5F8FA;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-extra-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-extra-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-extra-extra-light-gray--has-hover {
  background-color: #F5F8FA;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-extra-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-extra-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-extra-extra-light-gray--has-hover {
  fill: #F5F8FA;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-extra-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-extra-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-extra-extra-light-gray--has-hover {
  border-color: #F5F8FA;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-extra-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-extra-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.color--neutral-white--has-hover {
  color: #FFFFFF;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-white--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-white--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-white--has-hover {
  background-color: #FFFFFF;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-white--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-white--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-white--has-hover {
  fill: #FFFFFF;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-white--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-white--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-white--has-hover {
  border-color: #FFFFFF;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-white--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-white--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

/*
  Color Hover Utility Classes:
  Creates a class for each category and color combination based on the interaction
  logic of the system (hover goes to one shade darker, active and hover are the same).

  .bg-color--dark-blue--hover {
    transition: background-color $transitionTiming $transitionEasing;
    &:hover {
      background-color: #005FD1;
    }
    &:active {
      background-color: #005FD1;
    }
  }


  Properties: color, background-color (bg-color), fill (fill-color), border-color
  Categories: extra-dark, dark, light, extra-light, neutral
  Colors: orange, yellow, green, blue, purple, pink

  .{property}--{category}-{color}--hover {
    transition: {property} $transitionTiming $transitionEasing;
    &:hover {
      {property}: {hoverColor};
    }
    &:active {
      {property}: {activeColor};
    }
  }

  Note: the background-color property uses bg-color in the classname.
  All others use the same class name as the CSS property they set.

*/
.color--extra-light-orange--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-orange--hover:hover {
    color: #FF8D57;
    cursor: pointer; }
  .color--extra-light-orange--hover:active {
    color: #FF8D57;
    cursor: pointer; }

.bg-color--extra-light-orange--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-orange--hover:hover {
    background-color: #FF8D57;
    cursor: pointer; }
  .bg-color--extra-light-orange--hover:active {
    background-color: #FF8D57;
    cursor: pointer; }

.fill-color--extra-light-orange--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-orange--hover:hover {
    fill: #FF8D57;
    cursor: pointer; }
  .fill-color--extra-light-orange--hover:active {
    fill: #FF8D57;
    cursor: pointer; }

.border-color--extra-light-orange--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-orange--hover:hover {
    border-color: #FF8D57;
    cursor: pointer; }
  .border-color--extra-light-orange--hover:active {
    border-color: #FF8D57;
    cursor: pointer; }

.color--extra-light-yellow--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-yellow--hover:hover {
    color: #FFD03F;
    cursor: pointer; }
  .color--extra-light-yellow--hover:active {
    color: #FFD03F;
    cursor: pointer; }

.bg-color--extra-light-yellow--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-yellow--hover:hover {
    background-color: #FFD03F;
    cursor: pointer; }
  .bg-color--extra-light-yellow--hover:active {
    background-color: #FFD03F;
    cursor: pointer; }

.fill-color--extra-light-yellow--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-yellow--hover:hover {
    fill: #FFD03F;
    cursor: pointer; }
  .fill-color--extra-light-yellow--hover:active {
    fill: #FFD03F;
    cursor: pointer; }

.border-color--extra-light-yellow--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-yellow--hover:hover {
    border-color: #FFD03F;
    cursor: pointer; }
  .border-color--extra-light-yellow--hover:active {
    border-color: #FFD03F;
    cursor: pointer; }

.color--extra-light-green--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-green--hover:hover {
    color: #68E090;
    cursor: pointer; }
  .color--extra-light-green--hover:active {
    color: #68E090;
    cursor: pointer; }

.bg-color--extra-light-green--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-green--hover:hover {
    background-color: #68E090;
    cursor: pointer; }
  .bg-color--extra-light-green--hover:active {
    background-color: #68E090;
    cursor: pointer; }

.fill-color--extra-light-green--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-green--hover:hover {
    fill: #68E090;
    cursor: pointer; }
  .fill-color--extra-light-green--hover:active {
    fill: #68E090;
    cursor: pointer; }

.border-color--extra-light-green--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-green--hover:hover {
    border-color: #68E090;
    cursor: pointer; }
  .border-color--extra-light-green--hover:active {
    border-color: #68E090;
    cursor: pointer; }

.color--extra-light-blue--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-blue--hover:hover {
    color: #71C9F8;
    cursor: pointer; }
  .color--extra-light-blue--hover:active {
    color: #71C9F8;
    cursor: pointer; }

.bg-color--extra-light-blue--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-blue--hover:hover {
    background-color: #71C9F8;
    cursor: pointer; }
  .bg-color--extra-light-blue--hover:active {
    background-color: #71C9F8;
    cursor: pointer; }

.fill-color--extra-light-blue--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-blue--hover:hover {
    fill: #71C9F8;
    cursor: pointer; }
  .fill-color--extra-light-blue--hover:active {
    fill: #71C9F8;
    cursor: pointer; }

.border-color--extra-light-blue--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-blue--hover:hover {
    border-color: #71C9F8;
    cursor: pointer; }
  .border-color--extra-light-blue--hover:active {
    border-color: #71C9F8;
    cursor: pointer; }

.color--extra-light-purple--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-purple--hover:hover {
    color: #A37CED;
    cursor: pointer; }
  .color--extra-light-purple--hover:active {
    color: #A37CED;
    cursor: pointer; }

.bg-color--extra-light-purple--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-purple--hover:hover {
    background-color: #A37CED;
    cursor: pointer; }
  .bg-color--extra-light-purple--hover:active {
    background-color: #A37CED;
    cursor: pointer; }

.fill-color--extra-light-purple--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-purple--hover:hover {
    fill: #A37CED;
    cursor: pointer; }
  .fill-color--extra-light-purple--hover:active {
    fill: #A37CED;
    cursor: pointer; }

.border-color--extra-light-purple--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-purple--hover:hover {
    border-color: #A37CED;
    cursor: pointer; }
  .border-color--extra-light-purple--hover:active {
    border-color: #A37CED;
    cursor: pointer; }

.color--extra-light-pink--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-pink--hover:hover {
    color: #F6809A;
    cursor: pointer; }
  .color--extra-light-pink--hover:active {
    color: #F6809A;
    cursor: pointer; }

.bg-color--extra-light-pink--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-pink--hover:hover {
    background-color: #F6809A;
    cursor: pointer; }
  .bg-color--extra-light-pink--hover:active {
    background-color: #F6809A;
    cursor: pointer; }

.fill-color--extra-light-pink--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-pink--hover:hover {
    fill: #F6809A;
    cursor: pointer; }
  .fill-color--extra-light-pink--hover:active {
    fill: #F6809A;
    cursor: pointer; }

.border-color--extra-light-pink--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-pink--hover:hover {
    border-color: #F6809A;
    cursor: pointer; }
  .border-color--extra-light-pink--hover:active {
    border-color: #F6809A;
    cursor: pointer; }

.color--light-orange--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-orange--hover:hover {
    color: #F45D22;
    cursor: pointer; }
  .color--light-orange--hover:active {
    color: #F45D22;
    cursor: pointer; }

.bg-color--light-orange--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-orange--hover:hover {
    background-color: #F45D22;
    cursor: pointer; }
  .bg-color--light-orange--hover:active {
    background-color: #F45D22;
    cursor: pointer; }

.fill-color--light-orange--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-orange--hover:hover {
    fill: #F45D22;
    cursor: pointer; }
  .fill-color--light-orange--hover:active {
    fill: #F45D22;
    cursor: pointer; }

.border-color--light-orange--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-orange--hover:hover {
    border-color: #F45D22;
    cursor: pointer; }
  .border-color--light-orange--hover:active {
    border-color: #F45D22;
    cursor: pointer; }

.color--light-yellow--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-yellow--hover:hover {
    color: #FFAD1F;
    cursor: pointer; }
  .color--light-yellow--hover:active {
    color: #FFAD1F;
    cursor: pointer; }

.bg-color--light-yellow--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-yellow--hover:hover {
    background-color: #FFAD1F;
    cursor: pointer; }
  .bg-color--light-yellow--hover:active {
    background-color: #FFAD1F;
    cursor: pointer; }

.fill-color--light-yellow--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-yellow--hover:hover {
    fill: #FFAD1F;
    cursor: pointer; }
  .fill-color--light-yellow--hover:active {
    fill: #FFAD1F;
    cursor: pointer; }

.border-color--light-yellow--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-yellow--hover:hover {
    border-color: #FFAD1F;
    cursor: pointer; }
  .border-color--light-yellow--hover:active {
    border-color: #FFAD1F;
    cursor: pointer; }

.color--light-green--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-green--hover:hover {
    color: #1FB650;
    cursor: pointer; }
  .color--light-green--hover:active {
    color: #1FB650;
    cursor: pointer; }

.bg-color--light-green--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-green--hover:hover {
    background-color: #1FB650;
    cursor: pointer; }
  .bg-color--light-green--hover:active {
    background-color: #1FB650;
    cursor: pointer; }

.fill-color--light-green--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-green--hover:hover {
    fill: #1FB650;
    cursor: pointer; }
  .fill-color--light-green--hover:active {
    fill: #1FB650;
    cursor: pointer; }

.border-color--light-green--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-green--hover:hover {
    border-color: #1FB650;
    cursor: pointer; }
  .border-color--light-green--hover:active {
    border-color: #1FB650;
    cursor: pointer; }

.color--light-blue--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-blue--hover:hover {
    color: #1DA1F2;
    cursor: pointer; }
  .color--light-blue--hover:active {
    color: #1DA1F2;
    cursor: pointer; }

.bg-color--light-blue--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-blue--hover:hover {
    background-color: #1DA1F2;
    cursor: pointer; }
  .bg-color--light-blue--hover:active {
    background-color: #1DA1F2;
    cursor: pointer; }

.fill-color--light-blue--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-blue--hover:hover {
    fill: #1DA1F2;
    cursor: pointer; }
  .fill-color--light-blue--hover:active {
    fill: #1DA1F2;
    cursor: pointer; }

.border-color--light-blue--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-blue--hover:hover {
    border-color: #1DA1F2;
    cursor: pointer; }
  .border-color--light-blue--hover:active {
    border-color: #1DA1F2;
    cursor: pointer; }

.color--light-purple--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-purple--hover:hover {
    color: #794BC4;
    cursor: pointer; }
  .color--light-purple--hover:active {
    color: #794BC4;
    cursor: pointer; }

.bg-color--light-purple--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-purple--hover:hover {
    background-color: #794BC4;
    cursor: pointer; }
  .bg-color--light-purple--hover:active {
    background-color: #794BC4;
    cursor: pointer; }

.fill-color--light-purple--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-purple--hover:hover {
    fill: #794BC4;
    cursor: pointer; }
  .fill-color--light-purple--hover:active {
    fill: #794BC4;
    cursor: pointer; }

.border-color--light-purple--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-purple--hover:hover {
    border-color: #794BC4;
    cursor: pointer; }
  .border-color--light-purple--hover:active {
    border-color: #794BC4;
    cursor: pointer; }

.color--light-pink--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-pink--hover:hover {
    color: #E0245E;
    cursor: pointer; }
  .color--light-pink--hover:active {
    color: #E0245E;
    cursor: pointer; }

.bg-color--light-pink--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-pink--hover:hover {
    background-color: #E0245E;
    cursor: pointer; }
  .bg-color--light-pink--hover:active {
    background-color: #E0245E;
    cursor: pointer; }

.fill-color--light-pink--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-pink--hover:hover {
    fill: #E0245E;
    cursor: pointer; }
  .fill-color--light-pink--hover:active {
    fill: #E0245E;
    cursor: pointer; }

.border-color--light-pink--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-pink--hover:hover {
    border-color: #E0245E;
    cursor: pointer; }
  .border-color--light-pink--hover:active {
    border-color: #E0245E;
    cursor: pointer; }

.color--dark-orange--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-orange--hover:hover {
    color: #D82E18;
    cursor: pointer; }
  .color--dark-orange--hover:active {
    color: #D82E18;
    cursor: pointer; }

.bg-color--dark-orange--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-orange--hover:hover {
    background-color: #D82E18;
    cursor: pointer; }
  .bg-color--dark-orange--hover:active {
    background-color: #D82E18;
    cursor: pointer; }

.fill-color--dark-orange--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-orange--hover:hover {
    fill: #D82E18;
    cursor: pointer; }
  .fill-color--dark-orange--hover:active {
    fill: #D82E18;
    cursor: pointer; }

.border-color--dark-orange--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-orange--hover:hover {
    border-color: #D82E18;
    cursor: pointer; }
  .border-color--dark-orange--hover:active {
    border-color: #D82E18;
    cursor: pointer; }

.color--dark-yellow--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-yellow--hover:hover {
    color: #F98E00;
    cursor: pointer; }
  .color--dark-yellow--hover:active {
    color: #F98E00;
    cursor: pointer; }

.bg-color--dark-yellow--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-yellow--hover:hover {
    background-color: #F98E00;
    cursor: pointer; }
  .bg-color--dark-yellow--hover:active {
    background-color: #F98E00;
    cursor: pointer; }

.fill-color--dark-yellow--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-yellow--hover:hover {
    fill: #F98E00;
    cursor: pointer; }
  .fill-color--dark-yellow--hover:active {
    fill: #F98E00;
    cursor: pointer; }

.border-color--dark-yellow--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-yellow--hover:hover {
    border-color: #F98E00;
    cursor: pointer; }
  .border-color--dark-yellow--hover:active {
    border-color: #F98E00;
    cursor: pointer; }

.color--dark-green--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-green--hover:hover {
    color: #008951;
    cursor: pointer; }
  .color--dark-green--hover:active {
    color: #008951;
    cursor: pointer; }

.bg-color--dark-green--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-green--hover:hover {
    background-color: #008951;
    cursor: pointer; }
  .bg-color--dark-green--hover:active {
    background-color: #008951;
    cursor: pointer; }

.fill-color--dark-green--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-green--hover:hover {
    fill: #008951;
    cursor: pointer; }
  .fill-color--dark-green--hover:active {
    fill: #008951;
    cursor: pointer; }

.border-color--dark-green--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-green--hover:hover {
    border-color: #008951;
    cursor: pointer; }
  .border-color--dark-green--hover:active {
    border-color: #008951;
    cursor: pointer; }

.color--dark-blue--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-blue--hover:hover {
    color: #005FD1;
    cursor: pointer; }
  .color--dark-blue--hover:active {
    color: #005FD1;
    cursor: pointer; }

.bg-color--dark-blue--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-blue--hover:hover {
    background-color: #005FD1;
    cursor: pointer; }
  .bg-color--dark-blue--hover:active {
    background-color: #005FD1;
    cursor: pointer; }

.fill-color--dark-blue--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-blue--hover:hover {
    fill: #005FD1;
    cursor: pointer; }
  .fill-color--dark-blue--hover:active {
    fill: #005FD1;
    cursor: pointer; }

.border-color--dark-blue--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-blue--hover:hover {
    border-color: #005FD1;
    cursor: pointer; }
  .border-color--dark-blue--hover:active {
    border-color: #005FD1;
    cursor: pointer; }

.color--dark-purple--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-purple--hover:hover {
    color: #4F0299;
    cursor: pointer; }
  .color--dark-purple--hover:active {
    color: #4F0299;
    cursor: pointer; }

.bg-color--dark-purple--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-purple--hover:hover {
    background-color: #4F0299;
    cursor: pointer; }
  .bg-color--dark-purple--hover:active {
    background-color: #4F0299;
    cursor: pointer; }

.fill-color--dark-purple--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-purple--hover:hover {
    fill: #4F0299;
    cursor: pointer; }
  .fill-color--dark-purple--hover:active {
    fill: #4F0299;
    cursor: pointer; }

.border-color--dark-purple--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-purple--hover:hover {
    border-color: #4F0299;
    cursor: pointer; }
  .border-color--dark-purple--hover:active {
    border-color: #4F0299;
    cursor: pointer; }

.color--dark-pink--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-pink--hover:hover {
    color: #A01744;
    cursor: pointer; }
  .color--dark-pink--hover:active {
    color: #A01744;
    cursor: pointer; }

.bg-color--dark-pink--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-pink--hover:hover {
    background-color: #A01744;
    cursor: pointer; }
  .bg-color--dark-pink--hover:active {
    background-color: #A01744;
    cursor: pointer; }

.fill-color--dark-pink--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-pink--hover:hover {
    fill: #A01744;
    cursor: pointer; }
  .fill-color--dark-pink--hover:active {
    fill: #A01744;
    cursor: pointer; }

.border-color--dark-pink--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-pink--hover:hover {
    border-color: #A01744;
    cursor: pointer; }
  .border-color--dark-pink--hover:active {
    border-color: #A01744;
    cursor: pointer; }

.color--extra-dark-orange--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-orange--hover:hover {
    color: #F45D22;
    cursor: pointer; }
  .color--extra-dark-orange--hover:active {
    color: #F45D22;
    cursor: pointer; }

.bg-color--extra-dark-orange--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-orange--hover:hover {
    background-color: #F45D22;
    cursor: pointer; }
  .bg-color--extra-dark-orange--hover:active {
    background-color: #F45D22;
    cursor: pointer; }

.fill-color--extra-dark-orange--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-orange--hover:hover {
    fill: #F45D22;
    cursor: pointer; }
  .fill-color--extra-dark-orange--hover:active {
    fill: #F45D22;
    cursor: pointer; }

.border-color--extra-dark-orange--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-orange--hover:hover {
    border-color: #F45D22;
    cursor: pointer; }
  .border-color--extra-dark-orange--hover:active {
    border-color: #F45D22;
    cursor: pointer; }

.color--extra-dark-yellow--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-yellow--hover:hover {
    color: #FFAD1F;
    cursor: pointer; }
  .color--extra-dark-yellow--hover:active {
    color: #FFAD1F;
    cursor: pointer; }

.bg-color--extra-dark-yellow--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-yellow--hover:hover {
    background-color: #FFAD1F;
    cursor: pointer; }
  .bg-color--extra-dark-yellow--hover:active {
    background-color: #FFAD1F;
    cursor: pointer; }

.fill-color--extra-dark-yellow--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-yellow--hover:hover {
    fill: #FFAD1F;
    cursor: pointer; }
  .fill-color--extra-dark-yellow--hover:active {
    fill: #FFAD1F;
    cursor: pointer; }

.border-color--extra-dark-yellow--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-yellow--hover:hover {
    border-color: #FFAD1F;
    cursor: pointer; }
  .border-color--extra-dark-yellow--hover:active {
    border-color: #FFAD1F;
    cursor: pointer; }

.color--extra-dark-green--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-green--hover:hover {
    color: #1FB650;
    cursor: pointer; }
  .color--extra-dark-green--hover:active {
    color: #1FB650;
    cursor: pointer; }

.bg-color--extra-dark-green--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-green--hover:hover {
    background-color: #1FB650;
    cursor: pointer; }
  .bg-color--extra-dark-green--hover:active {
    background-color: #1FB650;
    cursor: pointer; }

.fill-color--extra-dark-green--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-green--hover:hover {
    fill: #1FB650;
    cursor: pointer; }
  .fill-color--extra-dark-green--hover:active {
    fill: #1FB650;
    cursor: pointer; }

.border-color--extra-dark-green--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-green--hover:hover {
    border-color: #1FB650;
    cursor: pointer; }
  .border-color--extra-dark-green--hover:active {
    border-color: #1FB650;
    cursor: pointer; }

.color--extra-dark-blue--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-blue--hover:hover {
    color: #1DA1F2;
    cursor: pointer; }
  .color--extra-dark-blue--hover:active {
    color: #1DA1F2;
    cursor: pointer; }

.bg-color--extra-dark-blue--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-blue--hover:hover {
    background-color: #1DA1F2;
    cursor: pointer; }
  .bg-color--extra-dark-blue--hover:active {
    background-color: #1DA1F2;
    cursor: pointer; }

.fill-color--extra-dark-blue--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-blue--hover:hover {
    fill: #1DA1F2;
    cursor: pointer; }
  .fill-color--extra-dark-blue--hover:active {
    fill: #1DA1F2;
    cursor: pointer; }

.border-color--extra-dark-blue--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-blue--hover:hover {
    border-color: #1DA1F2;
    cursor: pointer; }
  .border-color--extra-dark-blue--hover:active {
    border-color: #1DA1F2;
    cursor: pointer; }

.color--extra-dark-purple--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-purple--hover:hover {
    color: #794BC4;
    cursor: pointer; }
  .color--extra-dark-purple--hover:active {
    color: #794BC4;
    cursor: pointer; }

.bg-color--extra-dark-purple--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-purple--hover:hover {
    background-color: #794BC4;
    cursor: pointer; }
  .bg-color--extra-dark-purple--hover:active {
    background-color: #794BC4;
    cursor: pointer; }

.fill-color--extra-dark-purple--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-purple--hover:hover {
    fill: #794BC4;
    cursor: pointer; }
  .fill-color--extra-dark-purple--hover:active {
    fill: #794BC4;
    cursor: pointer; }

.border-color--extra-dark-purple--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-purple--hover:hover {
    border-color: #794BC4;
    cursor: pointer; }
  .border-color--extra-dark-purple--hover:active {
    border-color: #794BC4;
    cursor: pointer; }

.color--extra-dark-pink--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-pink--hover:hover {
    color: #E0245E;
    cursor: pointer; }
  .color--extra-dark-pink--hover:active {
    color: #E0245E;
    cursor: pointer; }

.bg-color--extra-dark-pink--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-pink--hover:hover {
    background-color: #E0245E;
    cursor: pointer; }
  .bg-color--extra-dark-pink--hover:active {
    background-color: #E0245E;
    cursor: pointer; }

.fill-color--extra-dark-pink--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-pink--hover:hover {
    fill: #E0245E;
    cursor: pointer; }
  .fill-color--extra-dark-pink--hover:active {
    fill: #E0245E;
    cursor: pointer; }

.border-color--extra-dark-pink--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-pink--hover:hover {
    border-color: #E0245E;
    cursor: pointer; }
  .border-color--extra-dark-pink--hover:active {
    border-color: #E0245E;
    cursor: pointer; }

/*
  Theme Color Utility Classes:
  Creates a class for each category and color combination.

  .theme--blue .theme-bg-color--dark--hover {
    &:hover {
      background-color: #005FD1;
    }
    &:active {
      background-color: #005FD1;
    }
  }
}

  Properties: color, background-color (bg-color), (fill) fill-color, border-color
  Categories: extra-dark, dark, light, extra-light, neutral
  Colors: orange, yellow, green, blue, purple, pink

  .theme--{color} .theme-{property}--{category}--hover {
    &:hover {
      {property}: {hoverColor}
    }
    &:active {
      {property}: {activeColor}
    }
  }

  Note: the background-color property uses bg-color in the classname.
  All others use the same class name as the CSS property they set.

*/
.theme--orange .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--orange .theme-color--extra-light--hover:hover {
    color: #FF8D57;
    cursor: pointer; }
  .theme--orange .theme-color--extra-light--hover:active {
    color: #FF8D57;
    cursor: pointer; }

.theme--orange .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--orange .theme-bg-color--extra-light--hover:hover {
    background-color: #FF8D57;
    cursor: pointer; }
  .theme--orange .theme-bg-color--extra-light--hover:active {
    background-color: #FF8D57;
    cursor: pointer; }

.theme--orange .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--orange .theme-fill-color--extra-light--hover:hover {
    fill: #FF8D57;
    cursor: pointer; }
  .theme--orange .theme-fill-color--extra-light--hover:active {
    fill: #FF8D57;
    cursor: pointer; }

.theme--orange .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--orange .theme-border-color--extra-light--hover:hover {
    border-color: #FF8D57;
    cursor: pointer; }
  .theme--orange .theme-border-color--extra-light--hover:active {
    border-color: #FF8D57;
    cursor: pointer; }

.theme--yellow .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--yellow .theme-color--extra-light--hover:hover {
    color: #FFD03F;
    cursor: pointer; }
  .theme--yellow .theme-color--extra-light--hover:active {
    color: #FFD03F;
    cursor: pointer; }

.theme--yellow .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--yellow .theme-bg-color--extra-light--hover:hover {
    background-color: #FFD03F;
    cursor: pointer; }
  .theme--yellow .theme-bg-color--extra-light--hover:active {
    background-color: #FFD03F;
    cursor: pointer; }

.theme--yellow .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--yellow .theme-fill-color--extra-light--hover:hover {
    fill: #FFD03F;
    cursor: pointer; }
  .theme--yellow .theme-fill-color--extra-light--hover:active {
    fill: #FFD03F;
    cursor: pointer; }

.theme--yellow .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--yellow .theme-border-color--extra-light--hover:hover {
    border-color: #FFD03F;
    cursor: pointer; }
  .theme--yellow .theme-border-color--extra-light--hover:active {
    border-color: #FFD03F;
    cursor: pointer; }

.theme--green .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--green .theme-color--extra-light--hover:hover {
    color: #68E090;
    cursor: pointer; }
  .theme--green .theme-color--extra-light--hover:active {
    color: #68E090;
    cursor: pointer; }

.theme--green .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--green .theme-bg-color--extra-light--hover:hover {
    background-color: #68E090;
    cursor: pointer; }
  .theme--green .theme-bg-color--extra-light--hover:active {
    background-color: #68E090;
    cursor: pointer; }

.theme--green .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--green .theme-fill-color--extra-light--hover:hover {
    fill: #68E090;
    cursor: pointer; }
  .theme--green .theme-fill-color--extra-light--hover:active {
    fill: #68E090;
    cursor: pointer; }

.theme--green .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--green .theme-border-color--extra-light--hover:hover {
    border-color: #68E090;
    cursor: pointer; }
  .theme--green .theme-border-color--extra-light--hover:active {
    border-color: #68E090;
    cursor: pointer; }

.theme--blue .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--blue .theme-color--extra-light--hover:hover {
    color: #71C9F8;
    cursor: pointer; }
  .theme--blue .theme-color--extra-light--hover:active {
    color: #71C9F8;
    cursor: pointer; }

.theme--blue .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--blue .theme-bg-color--extra-light--hover:hover {
    background-color: #71C9F8;
    cursor: pointer; }
  .theme--blue .theme-bg-color--extra-light--hover:active {
    background-color: #71C9F8;
    cursor: pointer; }

.theme--blue .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--blue .theme-fill-color--extra-light--hover:hover {
    fill: #71C9F8;
    cursor: pointer; }
  .theme--blue .theme-fill-color--extra-light--hover:active {
    fill: #71C9F8;
    cursor: pointer; }

.theme--blue .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--blue .theme-border-color--extra-light--hover:hover {
    border-color: #71C9F8;
    cursor: pointer; }
  .theme--blue .theme-border-color--extra-light--hover:active {
    border-color: #71C9F8;
    cursor: pointer; }

.theme--purple .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--purple .theme-color--extra-light--hover:hover {
    color: #A37CED;
    cursor: pointer; }
  .theme--purple .theme-color--extra-light--hover:active {
    color: #A37CED;
    cursor: pointer; }

.theme--purple .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--purple .theme-bg-color--extra-light--hover:hover {
    background-color: #A37CED;
    cursor: pointer; }
  .theme--purple .theme-bg-color--extra-light--hover:active {
    background-color: #A37CED;
    cursor: pointer; }

.theme--purple .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--purple .theme-fill-color--extra-light--hover:hover {
    fill: #A37CED;
    cursor: pointer; }
  .theme--purple .theme-fill-color--extra-light--hover:active {
    fill: #A37CED;
    cursor: pointer; }

.theme--purple .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--purple .theme-border-color--extra-light--hover:hover {
    border-color: #A37CED;
    cursor: pointer; }
  .theme--purple .theme-border-color--extra-light--hover:active {
    border-color: #A37CED;
    cursor: pointer; }

.theme--pink .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--pink .theme-color--extra-light--hover:hover {
    color: #F6809A;
    cursor: pointer; }
  .theme--pink .theme-color--extra-light--hover:active {
    color: #F6809A;
    cursor: pointer; }

.theme--pink .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--pink .theme-bg-color--extra-light--hover:hover {
    background-color: #F6809A;
    cursor: pointer; }
  .theme--pink .theme-bg-color--extra-light--hover:active {
    background-color: #F6809A;
    cursor: pointer; }

.theme--pink .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--pink .theme-fill-color--extra-light--hover:hover {
    fill: #F6809A;
    cursor: pointer; }
  .theme--pink .theme-fill-color--extra-light--hover:active {
    fill: #F6809A;
    cursor: pointer; }

.theme--pink .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--pink .theme-border-color--extra-light--hover:hover {
    border-color: #F6809A;
    cursor: pointer; }
  .theme--pink .theme-border-color--extra-light--hover:active {
    border-color: #F6809A;
    cursor: pointer; }

.theme--orange .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--orange .theme-color--light--hover:hover {
    color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-color--light--hover:active {
    color: #F45D22;
    cursor: pointer; }

.theme--orange .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--orange .theme-bg-color--light--hover:hover {
    background-color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-bg-color--light--hover:active {
    background-color: #F45D22;
    cursor: pointer; }

.theme--orange .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--orange .theme-fill-color--light--hover:hover {
    fill: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-fill-color--light--hover:active {
    fill: #F45D22;
    cursor: pointer; }

.theme--orange .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--orange .theme-border-color--light--hover:hover {
    border-color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-border-color--light--hover:active {
    border-color: #F45D22;
    cursor: pointer; }

.theme--yellow .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--yellow .theme-color--light--hover:hover {
    color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-color--light--hover:active {
    color: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--yellow .theme-bg-color--light--hover:hover {
    background-color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-bg-color--light--hover:active {
    background-color: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--yellow .theme-fill-color--light--hover:hover {
    fill: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-fill-color--light--hover:active {
    fill: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--yellow .theme-border-color--light--hover:hover {
    border-color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-border-color--light--hover:active {
    border-color: #FFAD1F;
    cursor: pointer; }

.theme--green .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--green .theme-color--light--hover:hover {
    color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-color--light--hover:active {
    color: #1FB650;
    cursor: pointer; }

.theme--green .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--green .theme-bg-color--light--hover:hover {
    background-color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-bg-color--light--hover:active {
    background-color: #1FB650;
    cursor: pointer; }

.theme--green .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--green .theme-fill-color--light--hover:hover {
    fill: #1FB650;
    cursor: pointer; }
  .theme--green .theme-fill-color--light--hover:active {
    fill: #1FB650;
    cursor: pointer; }

.theme--green .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--green .theme-border-color--light--hover:hover {
    border-color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-border-color--light--hover:active {
    border-color: #1FB650;
    cursor: pointer; }

.theme--blue .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--blue .theme-color--light--hover:hover {
    color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-color--light--hover:active {
    color: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--blue .theme-bg-color--light--hover:hover {
    background-color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-bg-color--light--hover:active {
    background-color: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--blue .theme-fill-color--light--hover:hover {
    fill: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-fill-color--light--hover:active {
    fill: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--blue .theme-border-color--light--hover:hover {
    border-color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-border-color--light--hover:active {
    border-color: #1DA1F2;
    cursor: pointer; }

.theme--purple .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--purple .theme-color--light--hover:hover {
    color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-color--light--hover:active {
    color: #794BC4;
    cursor: pointer; }

.theme--purple .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--purple .theme-bg-color--light--hover:hover {
    background-color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-bg-color--light--hover:active {
    background-color: #794BC4;
    cursor: pointer; }

.theme--purple .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--purple .theme-fill-color--light--hover:hover {
    fill: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-fill-color--light--hover:active {
    fill: #794BC4;
    cursor: pointer; }

.theme--purple .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--purple .theme-border-color--light--hover:hover {
    border-color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-border-color--light--hover:active {
    border-color: #794BC4;
    cursor: pointer; }

.theme--pink .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--pink .theme-color--light--hover:hover {
    color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-color--light--hover:active {
    color: #E0245E;
    cursor: pointer; }

.theme--pink .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--pink .theme-bg-color--light--hover:hover {
    background-color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-bg-color--light--hover:active {
    background-color: #E0245E;
    cursor: pointer; }

.theme--pink .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--pink .theme-fill-color--light--hover:hover {
    fill: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-fill-color--light--hover:active {
    fill: #E0245E;
    cursor: pointer; }

.theme--pink .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--pink .theme-border-color--light--hover:hover {
    border-color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-border-color--light--hover:active {
    border-color: #E0245E;
    cursor: pointer; }

.theme--orange .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--orange .theme-color--dark--hover:hover {
    color: #D82E18;
    cursor: pointer; }
  .theme--orange .theme-color--dark--hover:active {
    color: #D82E18;
    cursor: pointer; }

.theme--orange .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--orange .theme-bg-color--dark--hover:hover {
    background-color: #D82E18;
    cursor: pointer; }
  .theme--orange .theme-bg-color--dark--hover:active {
    background-color: #D82E18;
    cursor: pointer; }

.theme--orange .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--orange .theme-fill-color--dark--hover:hover {
    fill: #D82E18;
    cursor: pointer; }
  .theme--orange .theme-fill-color--dark--hover:active {
    fill: #D82E18;
    cursor: pointer; }

.theme--orange .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--orange .theme-border-color--dark--hover:hover {
    border-color: #D82E18;
    cursor: pointer; }
  .theme--orange .theme-border-color--dark--hover:active {
    border-color: #D82E18;
    cursor: pointer; }

.theme--yellow .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--yellow .theme-color--dark--hover:hover {
    color: #F98E00;
    cursor: pointer; }
  .theme--yellow .theme-color--dark--hover:active {
    color: #F98E00;
    cursor: pointer; }

.theme--yellow .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--yellow .theme-bg-color--dark--hover:hover {
    background-color: #F98E00;
    cursor: pointer; }
  .theme--yellow .theme-bg-color--dark--hover:active {
    background-color: #F98E00;
    cursor: pointer; }

.theme--yellow .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--yellow .theme-fill-color--dark--hover:hover {
    fill: #F98E00;
    cursor: pointer; }
  .theme--yellow .theme-fill-color--dark--hover:active {
    fill: #F98E00;
    cursor: pointer; }

.theme--yellow .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--yellow .theme-border-color--dark--hover:hover {
    border-color: #F98E00;
    cursor: pointer; }
  .theme--yellow .theme-border-color--dark--hover:active {
    border-color: #F98E00;
    cursor: pointer; }

.theme--green .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--green .theme-color--dark--hover:hover {
    color: #008951;
    cursor: pointer; }
  .theme--green .theme-color--dark--hover:active {
    color: #008951;
    cursor: pointer; }

.theme--green .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--green .theme-bg-color--dark--hover:hover {
    background-color: #008951;
    cursor: pointer; }
  .theme--green .theme-bg-color--dark--hover:active {
    background-color: #008951;
    cursor: pointer; }

.theme--green .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--green .theme-fill-color--dark--hover:hover {
    fill: #008951;
    cursor: pointer; }
  .theme--green .theme-fill-color--dark--hover:active {
    fill: #008951;
    cursor: pointer; }

.theme--green .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--green .theme-border-color--dark--hover:hover {
    border-color: #008951;
    cursor: pointer; }
  .theme--green .theme-border-color--dark--hover:active {
    border-color: #008951;
    cursor: pointer; }

.theme--blue .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--blue .theme-color--dark--hover:hover {
    color: #005FD1;
    cursor: pointer; }
  .theme--blue .theme-color--dark--hover:active {
    color: #005FD1;
    cursor: pointer; }

.theme--blue .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--blue .theme-bg-color--dark--hover:hover {
    background-color: #005FD1;
    cursor: pointer; }
  .theme--blue .theme-bg-color--dark--hover:active {
    background-color: #005FD1;
    cursor: pointer; }

.theme--blue .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--blue .theme-fill-color--dark--hover:hover {
    fill: #005FD1;
    cursor: pointer; }
  .theme--blue .theme-fill-color--dark--hover:active {
    fill: #005FD1;
    cursor: pointer; }

.theme--blue .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--blue .theme-border-color--dark--hover:hover {
    border-color: #005FD1;
    cursor: pointer; }
  .theme--blue .theme-border-color--dark--hover:active {
    border-color: #005FD1;
    cursor: pointer; }

.theme--purple .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--purple .theme-color--dark--hover:hover {
    color: #4F0299;
    cursor: pointer; }
  .theme--purple .theme-color--dark--hover:active {
    color: #4F0299;
    cursor: pointer; }

.theme--purple .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--purple .theme-bg-color--dark--hover:hover {
    background-color: #4F0299;
    cursor: pointer; }
  .theme--purple .theme-bg-color--dark--hover:active {
    background-color: #4F0299;
    cursor: pointer; }

.theme--purple .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--purple .theme-fill-color--dark--hover:hover {
    fill: #4F0299;
    cursor: pointer; }
  .theme--purple .theme-fill-color--dark--hover:active {
    fill: #4F0299;
    cursor: pointer; }

.theme--purple .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--purple .theme-border-color--dark--hover:hover {
    border-color: #4F0299;
    cursor: pointer; }
  .theme--purple .theme-border-color--dark--hover:active {
    border-color: #4F0299;
    cursor: pointer; }

.theme--pink .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--pink .theme-color--dark--hover:hover {
    color: #A01744;
    cursor: pointer; }
  .theme--pink .theme-color--dark--hover:active {
    color: #A01744;
    cursor: pointer; }

.theme--pink .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--pink .theme-bg-color--dark--hover:hover {
    background-color: #A01744;
    cursor: pointer; }
  .theme--pink .theme-bg-color--dark--hover:active {
    background-color: #A01744;
    cursor: pointer; }

.theme--pink .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--pink .theme-fill-color--dark--hover:hover {
    fill: #A01744;
    cursor: pointer; }
  .theme--pink .theme-fill-color--dark--hover:active {
    fill: #A01744;
    cursor: pointer; }

.theme--pink .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--pink .theme-border-color--dark--hover:hover {
    border-color: #A01744;
    cursor: pointer; }
  .theme--pink .theme-border-color--dark--hover:active {
    border-color: #A01744;
    cursor: pointer; }

.theme--orange .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--orange .theme-color--extra-dark--hover:hover {
    color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-color--extra-dark--hover:active {
    color: #F45D22;
    cursor: pointer; }

.theme--orange .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--orange .theme-bg-color--extra-dark--hover:hover {
    background-color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-bg-color--extra-dark--hover:active {
    background-color: #F45D22;
    cursor: pointer; }

.theme--orange .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--orange .theme-fill-color--extra-dark--hover:hover {
    fill: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-fill-color--extra-dark--hover:active {
    fill: #F45D22;
    cursor: pointer; }

.theme--orange .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--orange .theme-border-color--extra-dark--hover:hover {
    border-color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-border-color--extra-dark--hover:active {
    border-color: #F45D22;
    cursor: pointer; }

.theme--yellow .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--yellow .theme-color--extra-dark--hover:hover {
    color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-color--extra-dark--hover:active {
    color: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--yellow .theme-bg-color--extra-dark--hover:hover {
    background-color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-bg-color--extra-dark--hover:active {
    background-color: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--yellow .theme-fill-color--extra-dark--hover:hover {
    fill: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-fill-color--extra-dark--hover:active {
    fill: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--yellow .theme-border-color--extra-dark--hover:hover {
    border-color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-border-color--extra-dark--hover:active {
    border-color: #FFAD1F;
    cursor: pointer; }

.theme--green .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--green .theme-color--extra-dark--hover:hover {
    color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-color--extra-dark--hover:active {
    color: #1FB650;
    cursor: pointer; }

.theme--green .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--green .theme-bg-color--extra-dark--hover:hover {
    background-color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-bg-color--extra-dark--hover:active {
    background-color: #1FB650;
    cursor: pointer; }

.theme--green .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--green .theme-fill-color--extra-dark--hover:hover {
    fill: #1FB650;
    cursor: pointer; }
  .theme--green .theme-fill-color--extra-dark--hover:active {
    fill: #1FB650;
    cursor: pointer; }

.theme--green .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--green .theme-border-color--extra-dark--hover:hover {
    border-color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-border-color--extra-dark--hover:active {
    border-color: #1FB650;
    cursor: pointer; }

.theme--blue .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--blue .theme-color--extra-dark--hover:hover {
    color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-color--extra-dark--hover:active {
    color: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--blue .theme-bg-color--extra-dark--hover:hover {
    background-color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-bg-color--extra-dark--hover:active {
    background-color: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--blue .theme-fill-color--extra-dark--hover:hover {
    fill: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-fill-color--extra-dark--hover:active {
    fill: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--blue .theme-border-color--extra-dark--hover:hover {
    border-color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-border-color--extra-dark--hover:active {
    border-color: #1DA1F2;
    cursor: pointer; }

.theme--purple .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--purple .theme-color--extra-dark--hover:hover {
    color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-color--extra-dark--hover:active {
    color: #794BC4;
    cursor: pointer; }

.theme--purple .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--purple .theme-bg-color--extra-dark--hover:hover {
    background-color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-bg-color--extra-dark--hover:active {
    background-color: #794BC4;
    cursor: pointer; }

.theme--purple .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--purple .theme-fill-color--extra-dark--hover:hover {
    fill: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-fill-color--extra-dark--hover:active {
    fill: #794BC4;
    cursor: pointer; }

.theme--purple .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--purple .theme-border-color--extra-dark--hover:hover {
    border-color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-border-color--extra-dark--hover:active {
    border-color: #794BC4;
    cursor: pointer; }

.theme--pink .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--pink .theme-color--extra-dark--hover:hover {
    color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-color--extra-dark--hover:active {
    color: #E0245E;
    cursor: pointer; }

.theme--pink .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--pink .theme-bg-color--extra-dark--hover:hover {
    background-color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-bg-color--extra-dark--hover:active {
    background-color: #E0245E;
    cursor: pointer; }

.theme--pink .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--pink .theme-fill-color--extra-dark--hover:hover {
    fill: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-fill-color--extra-dark--hover:active {
    fill: #E0245E;
    cursor: pointer; }

.theme--pink .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--pink .theme-border-color--extra-dark--hover:hover {
    border-color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-border-color--extra-dark--hover:active {
    border-color: #E0245E;
    cursor: pointer; }

/*

font mixin
$key: type style key (ex. bold-24 or roman-24). See typography.json for options.
$breakpoint: (optional) breakpoint key (ex. full or tablet). See breakpoints.json for options.

@include font(bold-24);

When used without a breakpoint specified this mixin will produce font properties
wrapped in media queries. It's a simple way to apply fully responsive type styles
to a class or element.

@include font(bold-24, full);

If a breakpoint is specified there will be only a single set of font properties
that are NOT wrapped in any media queries.

*/
/*

  color(yellow) single argument defaults to dark colors
  color(light, yellow) returns light yellow

*/
/* rounded corners
  usage: border-radius( baseline( n ) )
*/
/*

https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/

The mixin assumes you'll be nesting an element with the class of content inside your initial block

<div class="sixteen-nine">
  <div class="content">
    insert content here
    this will maintain a 16:9 aspect ratio
  </div>
</div>

*/
@media (min-width: 768px) {
  .topic-page .nav .active-link {
    pointer-events: none;
    display: inline-block; } }

.nav {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  margin: auto;
  max-width: 1600px;
  width: 100%;
  height: 3rem;
  z-index: 11;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .nav.sticky {
    position: fixed; }
  .nav--wrapper {
    padding: 0.75rem 1.5rem;
    width: 100%; }
    @media (min-width: 768px) {
      .nav--wrapper {
        padding: 0.75rem 1.25rem;
        overflow: hidden; } }
  @media (min-width: 768px) {
    .nav {
      overflow: hidden; } }
  .nav.transparent {
    background-color: transparent; }
  .nav.active {
    height: 100%;
    min-height: 100vh;
    overflow-y: scroll; }
    @media (min-width: 768px) {
      .nav.active {
        height: 3rem; } }
    @media (min-width: 768px) {
      .nav.active.transparent {
        background-color: transparent; } }
    .nav.active .nav--menu {
      top: 3.75rem;
      width: 100%;
      opacity: 1;
      visibility: visible;
      clear: both;
      height: calc(100vh - 14rem);
      overflow-y: scroll; }
      @media (min-width: 768px) {
        .nav.active .nav--menu {
          top: 0;
          width: auto;
          opacity: 1;
          visibility: visible;
          clear: none;
          height: auto;
          overflow: auto; } }
    .nav.active .region-selector-mobile {
      display: block; }
      .nav.active .region-selector-mobile .region-selector .current-region {
        font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
        font-weight: 700;
        font-size: 0.87rem;
        line-height: 1.5rem;
        letter-spacing: 0.03rem;
        margin: 0;
        padding: 0 0 0rem 0;
        color: #FFFFFF !important; }
        @media (min-width: 768px) {
          .nav.active .region-selector-mobile .region-selector .current-region {
            font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
            font-weight: 400;
            font-size: 0.9975rem;
            line-height: 1.5rem;
            letter-spacing: 0.025rem;
            margin: 0;
            padding: 0 0 0rem 0; } }
    .nav.active .nav--header-left .nav--header-title .nav-icon {
      margin-top: -2px;
      -webkit-transform: rotate(-180deg);
              transform: rotate(-180deg); }
  .nav--header-left .nav--header-title {
    float: left; }
    .nav--header-left .nav--header-title .logo-title {
      display: block;
      float: left;
      text-decoration: none; }
      .nav--header-left .nav--header-title .logo-title .logo {
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        float: left;
        margin-right: 0.75rem; }
        @media (min-width: 768px) {
          .nav--header-left .nav--header-title .logo-title .logo {
            margin-right: 1rem; } }
        .nav--header-left .nav--header-title .logo-title .logo > svg {
          width: 1.5rem;
          height: 1.5rem;
          fill: #FFFFFF; }
    .nav--header-left .nav--header-title .nav-icon {
      display: block;
      float: left;
      margin-top: 4px;
      margin-left: 0.5rem;
      transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);
      -webkit-transform: rotate(0deg);
              transform: rotate(0deg); }
      .nav--header-left .nav--header-title .nav-icon:hover > svg {
        opacity: 0.6; }
      .nav--header-left .nav--header-title .nav-icon:active > svg {
        opacity: 0.6; }
      .nav--header-left .nav--header-title .nav-icon > svg {
        fill: #FFFFFF;
        height: 0.75rem;
        transition: opacity 0.3s ease-in-out;
        width: 0.75rem; }
      @media (min-width: 768px) {
        .nav--header-left .nav--header-title .nav-icon {
          display: none; } }
  .nav--menu {
    position: relative;
    float: left;
    padding: 0;
    margin: 0;
    list-style: none;
    width: 100%;
    opacity: 0;
    visibility: hidden;
    clear: both; }
    @media (min-width: 768px) {
      .nav--menu {
        width: auto;
        opacity: 1;
        visibility: visible;
        clear: none;
        margin-left: 2.5rem; } }
    .nav--menu .nav--mobile-item {
      display: block; }
      @media (min-width: 768px) {
        .nav--menu .nav--mobile-item {
          display: none; } }
    .nav--menu__list-item {
      padding: 1.5rem 0;
      border-bottom: 1px solid rgba(255, 255, 255, 0.4);
      display: block;
      width: 100%; }
      @media (min-width: 768px) {
        .nav--menu__list-item {
          display: block;
          float: left;
          width: auto;
          padding: 0 1.5rem 0 0;
          border-bottom: none; } }
      .nav--menu__list-item:last-child {
        padding-right: 0;
        border-bottom: none; }
      .nav--menu__list-item > a,
      .nav--menu__list-item > span {
        font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
        font-weight: 700;
        font-size: 1.5rem;
        line-height: 1.5rem;
        letter-spacing: 0rem;
        margin: 0;
        padding: 0 0 0rem 0;
        text-decoration: none; }
        @media (min-width: 768px) {
          .nav--menu__list-item > a,
          .nav--menu__list-item > span {
            font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
            font-weight: 400;
            font-size: 0.9975rem;
            line-height: 1.5rem;
            letter-spacing: 0.025rem;
            margin: 0;
            padding: 0 0 0rem 0; } }
      .nav--menu__list-item > a.active-link {
        color: rgba(255, 255, 255, 0.6); }
    .nav--menu .nav--menu__list-item--region-selector {
      display: block; }
      @media (min-width: 768px) {
        .nav--menu .nav--menu__list-item--region-selector {
          display: none; } }
  .nav--header-right {
    position: absolute;
    right: 1.5rem; }
    .nav--header-right .region-selector {
      display: none;
      float: left; }
      .nav--header-right .region-selector .current-region {
        font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
        font-weight: 700;
        font-size: 0.87rem;
        line-height: 1.5rem;
        letter-spacing: 0.03rem;
        margin: 0;
        padding: 0 0 0rem 0;
        color: #FFFFFF !important; }
        @media (min-width: 768px) {
          .nav--header-right .region-selector .current-region {
            display: block;
            font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
            font-weight: 400;
            font-size: 0.9975rem;
            line-height: 1.5rem;
            letter-spacing: 0.025rem;
            margin: 0;
            padding: 0 0 0rem 0; } }
      @media (min-width: 768px) {
        .nav--header-right .region-selector {
          display: block;
          float: left;
          position: static; } }
    .nav--header-right .search {
      padding-left: 1.5rem;
      float: left; }
      .nav--header-right .search .search-icon {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center; }
        .nav--header-right .search .search-icon:hover svg {
          opacity: 0.6; }
        .nav--header-right .search .search-icon:active svg {
          opacity: 0.6; }
        .nav--header-right .search .search-icon svg {
          width: 24px;
          height: 24px;
          fill: #FFFFFF;
          transition: opacity 0.3s ease-in-out; }
    .nav--header-right.hidden .region-selector,
    .nav--header-right.hidden .search {
      display: none; }
    .nav--header-right.hidden > svg {
      display: block;
      cursor: pointer;
      position: absolute;
      -webkit-transform: scale(0.6);
              transform: scale(0.6);
      height: 24px;
      width: 24px;
      top: 0;
      right: 0;
      fill: #FFFFFF; }
      @media (min-width: 768px) {
        .nav--header-right.hidden > svg {
          height: auto;
          width: auto;
          top: -8px;
          -webkit-transform: scale(0.6);
                  transform: scale(0.6); } }
    .nav--header-right > svg {
      display: none; }
    @media (min-width: 768px) {
      .nav--header-right {
        right: 1.25rem; } }
  .nav .region-selector-mobile {
    display: none;
    position: absolute;
    left: 1.5rem;
    bottom: 5.25rem; }

.transparent-masthead {
  padding-bottom: 3rem; }

.search-page .nav--header-right .search {
  display: none; }
  @media (min-width: 768px) {
    .search-page .nav--header-right .search {
      display: block; } }

.search-page .nav--header-right.hidden .search {
  display: none; }
/*

font mixin
$key: type style key (ex. bold-24 or roman-24). See typography.json for options.
$breakpoint: (optional) breakpoint key (ex. full or tablet). See breakpoints.json for options.

@include font(bold-24);

When used without a breakpoint specified this mixin will produce font properties
wrapped in media queries. It's a simple way to apply fully responsive type styles
to a class or element.

@include font(bold-24, full);

If a breakpoint is specified there will be only a single set of font properties
that are NOT wrapped in any media queries.

*/
/*

  color(yellow) single argument defaults to dark colors
  color(light, yellow) returns light yellow

*/
/* rounded corners
  usage: border-radius( baseline( n ) )
*/
/*

https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/

The mixin assumes you'll be nesting an element with the class of content inside your initial block

<div class="sixteen-nine">
  <div class="content">
    insert content here
    this will maintain a 16:9 aspect ratio
  </div>
</div>

*/
.search-bar {
  margin: auto;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid;
  transition: fill 0.3s ease-in-out, border-color 0.3s ease-in-out; }
  .search-bar svg {
    overflow: visible;
    cursor: pointer;
    position: absolute;
    right: -10px;
    top: -14px;
    -webkit-transform: scale(0.48);
            transform: scale(0.48); }
    @media (min-width: 768px) {
      .search-bar svg {
        top: 0;
        right: 0;
        -webkit-transform: scale(0.75);
                transform: scale(0.75); } }
  .search-bar .close-svg-container {
    display: none; }
  .search-bar__input {
    font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-weight: 700;
    font-size: 1.5rem;
    line-height: 1.5rem;
    letter-spacing: 0rem;
    margin: 0;
    padding: 0 0 0rem 0;
    width: 95%;
    color: #FFFFFF; }
    .search-bar__input:focus {
      outline: none; }
    @media (min-width: 768px) {
      .search-bar__input {
        font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
        font-weight: 700;
        font-size: 3rem;
        line-height: 3rem;
        letter-spacing: -0.025rem;
        margin: 0;
        padding: 0 0 0rem 0; } }
  @media (min-width: 768px) {
    .search-bar {
      width: 83.05085%;
      float: left;
      margin-right: 1.69492%;
      float: none;
      margin: auto; } }

.nav__search-modal {
  z-index: 10;
  position: fixed;
  top: -100vh;
  height: 100vh;
  width: 100vw; }
  .nav__search-modal .search-bar {
    position: absolute;
    top: 25vh;
    left: 0;
    right: 0;
    -webkit-transform: translateY(-50%);
            transform: translateY(-50%);
    margin: 0 6.6%; }
    @media (min-width: 768px) {
      .nav__search-modal .search-bar {
        margin: auto;
        top: 50vh; } }
  .nav__search-modal.shown {
    top: 0; }

.page .nav__search-modal {
  transition: top .2s ease-in-out; }

html.no-scroll {
  overflow: hidden; }

.theme--orange .search-bar__input::-webkit-input-placeholder {
  color: #FFBE78;
  opacity: 1; }

.theme--orange .search-bar__input::-moz-placeholder {
  color: #FFBE78;
  opacity: 1; }

.theme--orange .search-bar__input:-ms-input-placeholder {
  color: #FFBE78;
  opacity: 1; }

.theme--orange .search-bar__input::placeholder {
  color: #FFBE78;
  opacity: 1; }

.theme--orange .search-bar__input::-moz-selection {
  background-color: rgba(255, 190, 120, 0.3);
  color: #FFFFFF; }

.theme--orange .search-bar__input::selection {
  background-color: rgba(255, 190, 120, 0.3);
  color: #FFFFFF; }

.theme--yellow .search-bar__input::-webkit-input-placeholder {
  color: #FFE76E;
  opacity: 1; }

.theme--yellow .search-bar__input::-moz-placeholder {
  color: #FFE76E;
  opacity: 1; }

.theme--yellow .search-bar__input:-ms-input-placeholder {
  color: #FFE76E;
  opacity: 1; }

.theme--yellow .search-bar__input::placeholder {
  color: #FFE76E;
  opacity: 1; }

.theme--yellow .search-bar__input::-moz-selection {
  background-color: rgba(255, 231, 110, 0.3);
  color: #FFFFFF; }

.theme--yellow .search-bar__input::selection {
  background-color: rgba(255, 231, 110, 0.3);
  color: #FFFFFF; }

.theme--green .search-bar__input::-webkit-input-placeholder {
  color: #A5F2AA;
  opacity: 1; }

.theme--green .search-bar__input::-moz-placeholder {
  color: #A5F2AA;
  opacity: 1; }

.theme--green .search-bar__input:-ms-input-placeholder {
  color: #A5F2AA;
  opacity: 1; }

.theme--green .search-bar__input::placeholder {
  color: #A5F2AA;
  opacity: 1; }

.theme--green .search-bar__input::-moz-selection {
  background-color: rgba(165, 242, 170, 0.3);
  color: #FFFFFF; }

.theme--green .search-bar__input::selection {
  background-color: rgba(165, 242, 170, 0.3);
  color: #FFFFFF; }

.theme--blue .search-bar__input::-webkit-input-placeholder {
  color: #97E3FF;
  opacity: 1; }

.theme--blue .search-bar__input::-moz-placeholder {
  color: #97E3FF;
  opacity: 1; }

.theme--blue .search-bar__input:-ms-input-placeholder {
  color: #97E3FF;
  opacity: 1; }

.theme--blue .search-bar__input::placeholder {
  color: #97E3FF;
  opacity: 1; }

.theme--blue .search-bar__input::-moz-selection {
  background-color: rgba(151, 227, 255, 0.3);
  color: #FFFFFF; }

.theme--blue .search-bar__input::selection {
  background-color: rgba(151, 227, 255, 0.3);
  color: #FFFFFF; }

.theme--purple .search-bar__input::-webkit-input-placeholder {
  color: #C7B4FA;
  opacity: 1; }

.theme--purple .search-bar__input::-moz-placeholder {
  color: #C7B4FA;
  opacity: 1; }

.theme--purple .search-bar__input:-ms-input-placeholder {
  color: #C7B4FA;
  opacity: 1; }

.theme--purple .search-bar__input::placeholder {
  color: #C7B4FA;
  opacity: 1; }

.theme--purple .search-bar__input::-moz-selection {
  background-color: rgba(199, 180, 250, 0.3);
  color: #FFFFFF; }

.theme--purple .search-bar__input::selection {
  background-color: rgba(199, 180, 250, 0.3);
  color: #FFFFFF; }

.theme--pink .search-bar__input::-webkit-input-placeholder {
  color: #FFB8C2;
  opacity: 1; }

.theme--pink .search-bar__input::-moz-placeholder {
  color: #FFB8C2;
  opacity: 1; }

.theme--pink .search-bar__input:-ms-input-placeholder {
  color: #FFB8C2;
  opacity: 1; }

.theme--pink .search-bar__input::placeholder {
  color: #FFB8C2;
  opacity: 1; }

.theme--pink .search-bar__input::-moz-selection {
  background-color: rgba(255, 184, 194, 0.3);
  color: #FFFFFF; }

.theme--pink .search-bar__input::selection {
  background-color: rgba(255, 184, 194, 0.3);
  color: #FFFFFF; }
/*

font mixin
$key: type style key (ex. bold-24 or roman-24). See typography.json for options.
$breakpoint: (optional) breakpoint key (ex. full or tablet). See breakpoints.json for options.

@include font(bold-24);

When used without a breakpoint specified this mixin will produce font properties
wrapped in media queries. It's a simple way to apply fully responsive type styles
to a class or element.

@include font(bold-24, full);

If a breakpoint is specified there will be only a single set of font properties
that are NOT wrapped in any media queries.

*/
/*

  color(yellow) single argument defaults to dark colors
  color(light, yellow) returns light yellow

*/
/* rounded corners
  usage: border-radius( baseline( n ) )
*/
/*

https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/

The mixin assumes you'll be nesting an element with the class of content inside your initial block

<div class="sixteen-nine">
  <div class="content">
    insert content here
    this will maintain a 16:9 aspect ratio
  </div>
</div>

*/
.footer {
  margin-top: 1.5rem; }
  .footer__row {
    float: clear;
    padding-bottom: 2.25rem; }
    .footer__row:first-child {
      padding-top: 2.25rem; }
  .footer-col {
    float: left;
    width: 100%; }
    .footer-col__list {
      overflow: hidden;
      list-style: none;
      transition-property: all;
      transition-duration: .3s;
      transition-timing-function: linear;
      max-height: 0px; }
      @media (min-width: 768px) {
        .footer-col__list {
          padding-top: 1.5rem;
          max-height: none; } }
    .footer-col__parent {
      position: relative;
      text-decoration: none;
      display: block;
      margin: 0.75rem 0; }
      .footer-col__parent .icon-container {
        width: 50%;
        position: absolute;
        right: 0;
        text-align: right; }
        .footer-col__parent .icon-container svg {
          height: 0.75rem;
          width: 0.75rem;
          transition-property: all;
          transition-duration: .3s;
          transition-timing-function: linear; }
          @media (min-width: 768px) {
            .footer-col__parent .icon-container svg {
              display: none; } }
      @media (min-width: 768px) {
        .footer-col__parent {
          color: #FFFFFF;
          margin: 0; } }
    .footer-col__link, .footer-col__footnote {
      display: block;
      text-decoration: none; }
      @media (min-width: 768px) {
        .footer-col__link, .footer-col__footnote {
          display: inline; } }
    .footer-col__link {
      margin-bottom: 1.5rem; }
      @media (min-width: 768px) {
        .footer-col__link {
          margin-bottom: none; } }
    .footer-col__footnote {
      height: 0.75rem;
      margin-bottom: 1.5rem; }
      @media (min-width: 768px) {
        .footer-col__footnote {
          margin-bottom: none;
          font-weight: normal; } }
    @media (min-width: 768px) {
      .footer-col {
        width: 20%; } }
  @media (min-width: 768px) {
    .footer {
      margin-top: 2.25rem; } }

.open-accordion .footer-col__parent {
  color: #FFFFFF !important; }
  .open-accordion .footer-col__parent .icon-container svg {
    fill: #FFFFFF !important;
    -webkit-transform: rotate(180deg);
            transform: rotate(180deg); }

.open-accordion .footer-col__link {
  color: #FFFFFF !important; }

.open-accordion .footer-col__list {
  max-height: 350px;
  padding-left: 30px; }
.color--neutral-black--has-hover {
  color: #14171A;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-black--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-black--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-black--has-hover {
  background-color: #14171A;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-black--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-black--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-black--has-hover {
  fill: #14171A;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-black--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-black--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-black--has-hover {
  border-color: #14171A;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-black--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-black--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.color--neutral-dark-gray--has-hover {
  color: #657786;
  transition: color 0.3s ease-in-out; }
  .color--neutral-dark-gray--has-hover:hover {
    color: color(neutral, black);
    cursor: pointer; }
  .color--neutral-dark-gray--has-hover:active {
    color: color(neutral, black);
    cursor: pointer; }

.bg-color--neutral-dark-gray--has-hover {
  background-color: #657786;
  transition: color 0.3s ease-in-out; }
  .bg-color--neutral-dark-gray--has-hover:hover {
    color: color(neutral, black);
    cursor: pointer; }
  .bg-color--neutral-dark-gray--has-hover:active {
    color: color(neutral, black);
    cursor: pointer; }

.fill-color--neutral-dark-gray--has-hover {
  fill: #657786;
  transition: color 0.3s ease-in-out; }
  .fill-color--neutral-dark-gray--has-hover:hover {
    color: color(neutral, black);
    cursor: pointer; }
  .fill-color--neutral-dark-gray--has-hover:active {
    color: color(neutral, black);
    cursor: pointer; }

.border-color--neutral-dark-gray--has-hover {
  border-color: #657786;
  transition: color 0.3s ease-in-out; }
  .border-color--neutral-dark-gray--has-hover:hover {
    color: color(neutral, black);
    cursor: pointer; }
  .border-color--neutral-dark-gray--has-hover:active {
    color: color(neutral, black);
    cursor: pointer; }

.color--neutral-light-gray--has-hover {
  color: #AAB8C2;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-light-gray--has-hover {
  background-color: #AAB8C2;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-light-gray--has-hover {
  fill: #AAB8C2;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-light-gray--has-hover {
  border-color: #AAB8C2;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.color--neutral-extra-light-gray--has-hover {
  color: #CCD6DD;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-extra-light-gray--has-hover {
  background-color: #CCD6DD;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-extra-light-gray--has-hover {
  fill: #CCD6DD;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-extra-light-gray--has-hover {
  border-color: #CCD6DD;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.color--neutral-extra-extra-light-gray--has-hover {
  color: #F5F8FA;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-extra-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-extra-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-extra-extra-light-gray--has-hover {
  background-color: #F5F8FA;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-extra-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-extra-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-extra-extra-light-gray--has-hover {
  fill: #F5F8FA;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-extra-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-extra-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-extra-extra-light-gray--has-hover {
  border-color: #F5F8FA;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-extra-extra-light-gray--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-extra-extra-light-gray--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.color--neutral-white--has-hover {
  color: #FFFFFF;
  transition: opacity 0.3s ease-in-out; }
  .color--neutral-white--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .color--neutral-white--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.bg-color--neutral-white--has-hover {
  background-color: #FFFFFF;
  transition: opacity 0.3s ease-in-out; }
  .bg-color--neutral-white--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .bg-color--neutral-white--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.fill-color--neutral-white--has-hover {
  fill: #FFFFFF;
  transition: opacity 0.3s ease-in-out; }
  .fill-color--neutral-white--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .fill-color--neutral-white--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

.border-color--neutral-white--has-hover {
  border-color: #FFFFFF;
  transition: opacity 0.3s ease-in-out; }
  .border-color--neutral-white--has-hover:hover {
    opacity: 0.6;
    cursor: pointer; }
  .border-color--neutral-white--has-hover:active {
    opacity: 0.6;
    cursor: pointer; }

/*
  Color Hover Utility Classes:
  Creates a class for each category and color combination based on the interaction
  logic of the system (hover goes to one shade darker, active and hover are the same).

  .bg-color--dark-blue--hover {
    transition: background-color $transitionTiming $transitionEasing;
    &:hover {
      background-color: #005FD1;
    }
    &:active {
      background-color: #005FD1;
    }
  }


  Properties: color, background-color (bg-color), fill (fill-color), border-color
  Categories: extra-dark, dark, light, extra-light, neutral
  Colors: orange, yellow, green, blue, purple, pink

  .{property}--{category}-{color}--hover {
    transition: {property} $transitionTiming $transitionEasing;
    &:hover {
      {property}: {hoverColor};
    }
    &:active {
      {property}: {activeColor};
    }
  }

  Note: the background-color property uses bg-color in the classname.
  All others use the same class name as the CSS property they set.

*/
.color--extra-light-orange--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-orange--hover:hover {
    color: #FF8D57;
    cursor: pointer; }
  .color--extra-light-orange--hover:active {
    color: #FF8D57;
    cursor: pointer; }

.bg-color--extra-light-orange--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-orange--hover:hover {
    background-color: #FF8D57;
    cursor: pointer; }
  .bg-color--extra-light-orange--hover:active {
    background-color: #FF8D57;
    cursor: pointer; }

.fill-color--extra-light-orange--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-orange--hover:hover {
    fill: #FF8D57;
    cursor: pointer; }
  .fill-color--extra-light-orange--hover:active {
    fill: #FF8D57;
    cursor: pointer; }

.border-color--extra-light-orange--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-orange--hover:hover {
    border-color: #FF8D57;
    cursor: pointer; }
  .border-color--extra-light-orange--hover:active {
    border-color: #FF8D57;
    cursor: pointer; }

.color--extra-light-yellow--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-yellow--hover:hover {
    color: #FFD03F;
    cursor: pointer; }
  .color--extra-light-yellow--hover:active {
    color: #FFD03F;
    cursor: pointer; }

.bg-color--extra-light-yellow--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-yellow--hover:hover {
    background-color: #FFD03F;
    cursor: pointer; }
  .bg-color--extra-light-yellow--hover:active {
    background-color: #FFD03F;
    cursor: pointer; }

.fill-color--extra-light-yellow--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-yellow--hover:hover {
    fill: #FFD03F;
    cursor: pointer; }
  .fill-color--extra-light-yellow--hover:active {
    fill: #FFD03F;
    cursor: pointer; }

.border-color--extra-light-yellow--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-yellow--hover:hover {
    border-color: #FFD03F;
    cursor: pointer; }
  .border-color--extra-light-yellow--hover:active {
    border-color: #FFD03F;
    cursor: pointer; }

.color--extra-light-green--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-green--hover:hover {
    color: #68E090;
    cursor: pointer; }
  .color--extra-light-green--hover:active {
    color: #68E090;
    cursor: pointer; }

.bg-color--extra-light-green--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-green--hover:hover {
    background-color: #68E090;
    cursor: pointer; }
  .bg-color--extra-light-green--hover:active {
    background-color: #68E090;
    cursor: pointer; }

.fill-color--extra-light-green--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-green--hover:hover {
    fill: #68E090;
    cursor: pointer; }
  .fill-color--extra-light-green--hover:active {
    fill: #68E090;
    cursor: pointer; }

.border-color--extra-light-green--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-green--hover:hover {
    border-color: #68E090;
    cursor: pointer; }
  .border-color--extra-light-green--hover:active {
    border-color: #68E090;
    cursor: pointer; }

.color--extra-light-blue--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-blue--hover:hover {
    color: #71C9F8;
    cursor: pointer; }
  .color--extra-light-blue--hover:active {
    color: #71C9F8;
    cursor: pointer; }

.bg-color--extra-light-blue--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-blue--hover:hover {
    background-color: #71C9F8;
    cursor: pointer; }
  .bg-color--extra-light-blue--hover:active {
    background-color: #71C9F8;
    cursor: pointer; }

.fill-color--extra-light-blue--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-blue--hover:hover {
    fill: #71C9F8;
    cursor: pointer; }
  .fill-color--extra-light-blue--hover:active {
    fill: #71C9F8;
    cursor: pointer; }

.border-color--extra-light-blue--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-blue--hover:hover {
    border-color: #71C9F8;
    cursor: pointer; }
  .border-color--extra-light-blue--hover:active {
    border-color: #71C9F8;
    cursor: pointer; }

.color--extra-light-purple--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-purple--hover:hover {
    color: #A37CED;
    cursor: pointer; }
  .color--extra-light-purple--hover:active {
    color: #A37CED;
    cursor: pointer; }

.bg-color--extra-light-purple--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-purple--hover:hover {
    background-color: #A37CED;
    cursor: pointer; }
  .bg-color--extra-light-purple--hover:active {
    background-color: #A37CED;
    cursor: pointer; }

.fill-color--extra-light-purple--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-purple--hover:hover {
    fill: #A37CED;
    cursor: pointer; }
  .fill-color--extra-light-purple--hover:active {
    fill: #A37CED;
    cursor: pointer; }

.border-color--extra-light-purple--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-purple--hover:hover {
    border-color: #A37CED;
    cursor: pointer; }
  .border-color--extra-light-purple--hover:active {
    border-color: #A37CED;
    cursor: pointer; }

.color--extra-light-pink--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-light-pink--hover:hover {
    color: #F6809A;
    cursor: pointer; }
  .color--extra-light-pink--hover:active {
    color: #F6809A;
    cursor: pointer; }

.bg-color--extra-light-pink--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-light-pink--hover:hover {
    background-color: #F6809A;
    cursor: pointer; }
  .bg-color--extra-light-pink--hover:active {
    background-color: #F6809A;
    cursor: pointer; }

.fill-color--extra-light-pink--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-light-pink--hover:hover {
    fill: #F6809A;
    cursor: pointer; }
  .fill-color--extra-light-pink--hover:active {
    fill: #F6809A;
    cursor: pointer; }

.border-color--extra-light-pink--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-light-pink--hover:hover {
    border-color: #F6809A;
    cursor: pointer; }
  .border-color--extra-light-pink--hover:active {
    border-color: #F6809A;
    cursor: pointer; }

.color--light-orange--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-orange--hover:hover {
    color: #F45D22;
    cursor: pointer; }
  .color--light-orange--hover:active {
    color: #F45D22;
    cursor: pointer; }

.bg-color--light-orange--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-orange--hover:hover {
    background-color: #F45D22;
    cursor: pointer; }
  .bg-color--light-orange--hover:active {
    background-color: #F45D22;
    cursor: pointer; }

.fill-color--light-orange--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-orange--hover:hover {
    fill: #F45D22;
    cursor: pointer; }
  .fill-color--light-orange--hover:active {
    fill: #F45D22;
    cursor: pointer; }

.border-color--light-orange--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-orange--hover:hover {
    border-color: #F45D22;
    cursor: pointer; }
  .border-color--light-orange--hover:active {
    border-color: #F45D22;
    cursor: pointer; }

.color--light-yellow--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-yellow--hover:hover {
    color: #FFAD1F;
    cursor: pointer; }
  .color--light-yellow--hover:active {
    color: #FFAD1F;
    cursor: pointer; }

.bg-color--light-yellow--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-yellow--hover:hover {
    background-color: #FFAD1F;
    cursor: pointer; }
  .bg-color--light-yellow--hover:active {
    background-color: #FFAD1F;
    cursor: pointer; }

.fill-color--light-yellow--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-yellow--hover:hover {
    fill: #FFAD1F;
    cursor: pointer; }
  .fill-color--light-yellow--hover:active {
    fill: #FFAD1F;
    cursor: pointer; }

.border-color--light-yellow--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-yellow--hover:hover {
    border-color: #FFAD1F;
    cursor: pointer; }
  .border-color--light-yellow--hover:active {
    border-color: #FFAD1F;
    cursor: pointer; }

.color--light-green--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-green--hover:hover {
    color: #1FB650;
    cursor: pointer; }
  .color--light-green--hover:active {
    color: #1FB650;
    cursor: pointer; }

.bg-color--light-green--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-green--hover:hover {
    background-color: #1FB650;
    cursor: pointer; }
  .bg-color--light-green--hover:active {
    background-color: #1FB650;
    cursor: pointer; }

.fill-color--light-green--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-green--hover:hover {
    fill: #1FB650;
    cursor: pointer; }
  .fill-color--light-green--hover:active {
    fill: #1FB650;
    cursor: pointer; }

.border-color--light-green--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-green--hover:hover {
    border-color: #1FB650;
    cursor: pointer; }
  .border-color--light-green--hover:active {
    border-color: #1FB650;
    cursor: pointer; }

.color--light-blue--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-blue--hover:hover {
    color: #1DA1F2;
    cursor: pointer; }
  .color--light-blue--hover:active {
    color: #1DA1F2;
    cursor: pointer; }

.bg-color--light-blue--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-blue--hover:hover {
    background-color: #1DA1F2;
    cursor: pointer; }
  .bg-color--light-blue--hover:active {
    background-color: #1DA1F2;
    cursor: pointer; }

.fill-color--light-blue--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-blue--hover:hover {
    fill: #1DA1F2;
    cursor: pointer; }
  .fill-color--light-blue--hover:active {
    fill: #1DA1F2;
    cursor: pointer; }

.border-color--light-blue--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-blue--hover:hover {
    border-color: #1DA1F2;
    cursor: pointer; }
  .border-color--light-blue--hover:active {
    border-color: #1DA1F2;
    cursor: pointer; }

.color--light-purple--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-purple--hover:hover {
    color: #794BC4;
    cursor: pointer; }
  .color--light-purple--hover:active {
    color: #794BC4;
    cursor: pointer; }

.bg-color--light-purple--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-purple--hover:hover {
    background-color: #794BC4;
    cursor: pointer; }
  .bg-color--light-purple--hover:active {
    background-color: #794BC4;
    cursor: pointer; }

.fill-color--light-purple--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-purple--hover:hover {
    fill: #794BC4;
    cursor: pointer; }
  .fill-color--light-purple--hover:active {
    fill: #794BC4;
    cursor: pointer; }

.border-color--light-purple--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-purple--hover:hover {
    border-color: #794BC4;
    cursor: pointer; }
  .border-color--light-purple--hover:active {
    border-color: #794BC4;
    cursor: pointer; }

.color--light-pink--hover {
  transition: color 0.3s ease-in-out; }
  .color--light-pink--hover:hover {
    color: #E0245E;
    cursor: pointer; }
  .color--light-pink--hover:active {
    color: #E0245E;
    cursor: pointer; }

.bg-color--light-pink--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--light-pink--hover:hover {
    background-color: #E0245E;
    cursor: pointer; }
  .bg-color--light-pink--hover:active {
    background-color: #E0245E;
    cursor: pointer; }

.fill-color--light-pink--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--light-pink--hover:hover {
    fill: #E0245E;
    cursor: pointer; }
  .fill-color--light-pink--hover:active {
    fill: #E0245E;
    cursor: pointer; }

.border-color--light-pink--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--light-pink--hover:hover {
    border-color: #E0245E;
    cursor: pointer; }
  .border-color--light-pink--hover:active {
    border-color: #E0245E;
    cursor: pointer; }

.color--dark-orange--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-orange--hover:hover {
    color: #D82E18;
    cursor: pointer; }
  .color--dark-orange--hover:active {
    color: #D82E18;
    cursor: pointer; }

.bg-color--dark-orange--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-orange--hover:hover {
    background-color: #D82E18;
    cursor: pointer; }
  .bg-color--dark-orange--hover:active {
    background-color: #D82E18;
    cursor: pointer; }

.fill-color--dark-orange--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-orange--hover:hover {
    fill: #D82E18;
    cursor: pointer; }
  .fill-color--dark-orange--hover:active {
    fill: #D82E18;
    cursor: pointer; }

.border-color--dark-orange--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-orange--hover:hover {
    border-color: #D82E18;
    cursor: pointer; }
  .border-color--dark-orange--hover:active {
    border-color: #D82E18;
    cursor: pointer; }

.color--dark-yellow--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-yellow--hover:hover {
    color: #F98E00;
    cursor: pointer; }
  .color--dark-yellow--hover:active {
    color: #F98E00;
    cursor: pointer; }

.bg-color--dark-yellow--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-yellow--hover:hover {
    background-color: #F98E00;
    cursor: pointer; }
  .bg-color--dark-yellow--hover:active {
    background-color: #F98E00;
    cursor: pointer; }

.fill-color--dark-yellow--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-yellow--hover:hover {
    fill: #F98E00;
    cursor: pointer; }
  .fill-color--dark-yellow--hover:active {
    fill: #F98E00;
    cursor: pointer; }

.border-color--dark-yellow--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-yellow--hover:hover {
    border-color: #F98E00;
    cursor: pointer; }
  .border-color--dark-yellow--hover:active {
    border-color: #F98E00;
    cursor: pointer; }

.color--dark-green--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-green--hover:hover {
    color: #008951;
    cursor: pointer; }
  .color--dark-green--hover:active {
    color: #008951;
    cursor: pointer; }

.bg-color--dark-green--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-green--hover:hover {
    background-color: #008951;
    cursor: pointer; }
  .bg-color--dark-green--hover:active {
    background-color: #008951;
    cursor: pointer; }

.fill-color--dark-green--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-green--hover:hover {
    fill: #008951;
    cursor: pointer; }
  .fill-color--dark-green--hover:active {
    fill: #008951;
    cursor: pointer; }

.border-color--dark-green--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-green--hover:hover {
    border-color: #008951;
    cursor: pointer; }
  .border-color--dark-green--hover:active {
    border-color: #008951;
    cursor: pointer; }

.color--dark-blue--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-blue--hover:hover {
    color: #005FD1;
    cursor: pointer; }
  .color--dark-blue--hover:active {
    color: #005FD1;
    cursor: pointer; }

.bg-color--dark-blue--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-blue--hover:hover {
    background-color: #005FD1;
    cursor: pointer; }
  .bg-color--dark-blue--hover:active {
    background-color: #005FD1;
    cursor: pointer; }

.fill-color--dark-blue--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-blue--hover:hover {
    fill: #005FD1;
    cursor: pointer; }
  .fill-color--dark-blue--hover:active {
    fill: #005FD1;
    cursor: pointer; }

.border-color--dark-blue--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-blue--hover:hover {
    border-color: #005FD1;
    cursor: pointer; }
  .border-color--dark-blue--hover:active {
    border-color: #005FD1;
    cursor: pointer; }

.color--dark-purple--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-purple--hover:hover {
    color: #4F0299;
    cursor: pointer; }
  .color--dark-purple--hover:active {
    color: #4F0299;
    cursor: pointer; }

.bg-color--dark-purple--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-purple--hover:hover {
    background-color: #4F0299;
    cursor: pointer; }
  .bg-color--dark-purple--hover:active {
    background-color: #4F0299;
    cursor: pointer; }

.fill-color--dark-purple--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-purple--hover:hover {
    fill: #4F0299;
    cursor: pointer; }
  .fill-color--dark-purple--hover:active {
    fill: #4F0299;
    cursor: pointer; }

.border-color--dark-purple--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-purple--hover:hover {
    border-color: #4F0299;
    cursor: pointer; }
  .border-color--dark-purple--hover:active {
    border-color: #4F0299;
    cursor: pointer; }

.color--dark-pink--hover {
  transition: color 0.3s ease-in-out; }
  .color--dark-pink--hover:hover {
    color: #A01744;
    cursor: pointer; }
  .color--dark-pink--hover:active {
    color: #A01744;
    cursor: pointer; }

.bg-color--dark-pink--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--dark-pink--hover:hover {
    background-color: #A01744;
    cursor: pointer; }
  .bg-color--dark-pink--hover:active {
    background-color: #A01744;
    cursor: pointer; }

.fill-color--dark-pink--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--dark-pink--hover:hover {
    fill: #A01744;
    cursor: pointer; }
  .fill-color--dark-pink--hover:active {
    fill: #A01744;
    cursor: pointer; }

.border-color--dark-pink--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--dark-pink--hover:hover {
    border-color: #A01744;
    cursor: pointer; }
  .border-color--dark-pink--hover:active {
    border-color: #A01744;
    cursor: pointer; }

.color--extra-dark-orange--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-orange--hover:hover {
    color: #F45D22;
    cursor: pointer; }
  .color--extra-dark-orange--hover:active {
    color: #F45D22;
    cursor: pointer; }

.bg-color--extra-dark-orange--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-orange--hover:hover {
    background-color: #F45D22;
    cursor: pointer; }
  .bg-color--extra-dark-orange--hover:active {
    background-color: #F45D22;
    cursor: pointer; }

.fill-color--extra-dark-orange--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-orange--hover:hover {
    fill: #F45D22;
    cursor: pointer; }
  .fill-color--extra-dark-orange--hover:active {
    fill: #F45D22;
    cursor: pointer; }

.border-color--extra-dark-orange--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-orange--hover:hover {
    border-color: #F45D22;
    cursor: pointer; }
  .border-color--extra-dark-orange--hover:active {
    border-color: #F45D22;
    cursor: pointer; }

.color--extra-dark-yellow--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-yellow--hover:hover {
    color: #FFAD1F;
    cursor: pointer; }
  .color--extra-dark-yellow--hover:active {
    color: #FFAD1F;
    cursor: pointer; }

.bg-color--extra-dark-yellow--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-yellow--hover:hover {
    background-color: #FFAD1F;
    cursor: pointer; }
  .bg-color--extra-dark-yellow--hover:active {
    background-color: #FFAD1F;
    cursor: pointer; }

.fill-color--extra-dark-yellow--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-yellow--hover:hover {
    fill: #FFAD1F;
    cursor: pointer; }
  .fill-color--extra-dark-yellow--hover:active {
    fill: #FFAD1F;
    cursor: pointer; }

.border-color--extra-dark-yellow--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-yellow--hover:hover {
    border-color: #FFAD1F;
    cursor: pointer; }
  .border-color--extra-dark-yellow--hover:active {
    border-color: #FFAD1F;
    cursor: pointer; }

.color--extra-dark-green--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-green--hover:hover {
    color: #1FB650;
    cursor: pointer; }
  .color--extra-dark-green--hover:active {
    color: #1FB650;
    cursor: pointer; }

.bg-color--extra-dark-green--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-green--hover:hover {
    background-color: #1FB650;
    cursor: pointer; }
  .bg-color--extra-dark-green--hover:active {
    background-color: #1FB650;
    cursor: pointer; }

.fill-color--extra-dark-green--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-green--hover:hover {
    fill: #1FB650;
    cursor: pointer; }
  .fill-color--extra-dark-green--hover:active {
    fill: #1FB650;
    cursor: pointer; }

.border-color--extra-dark-green--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-green--hover:hover {
    border-color: #1FB650;
    cursor: pointer; }
  .border-color--extra-dark-green--hover:active {
    border-color: #1FB650;
    cursor: pointer; }

.color--extra-dark-blue--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-blue--hover:hover {
    color: #1DA1F2;
    cursor: pointer; }
  .color--extra-dark-blue--hover:active {
    color: #1DA1F2;
    cursor: pointer; }

.bg-color--extra-dark-blue--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-blue--hover:hover {
    background-color: #1DA1F2;
    cursor: pointer; }
  .bg-color--extra-dark-blue--hover:active {
    background-color: #1DA1F2;
    cursor: pointer; }

.fill-color--extra-dark-blue--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-blue--hover:hover {
    fill: #1DA1F2;
    cursor: pointer; }
  .fill-color--extra-dark-blue--hover:active {
    fill: #1DA1F2;
    cursor: pointer; }

.border-color--extra-dark-blue--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-blue--hover:hover {
    border-color: #1DA1F2;
    cursor: pointer; }
  .border-color--extra-dark-blue--hover:active {
    border-color: #1DA1F2;
    cursor: pointer; }

.color--extra-dark-purple--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-purple--hover:hover {
    color: #794BC4;
    cursor: pointer; }
  .color--extra-dark-purple--hover:active {
    color: #794BC4;
    cursor: pointer; }

.bg-color--extra-dark-purple--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-purple--hover:hover {
    background-color: #794BC4;
    cursor: pointer; }
  .bg-color--extra-dark-purple--hover:active {
    background-color: #794BC4;
    cursor: pointer; }

.fill-color--extra-dark-purple--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-purple--hover:hover {
    fill: #794BC4;
    cursor: pointer; }
  .fill-color--extra-dark-purple--hover:active {
    fill: #794BC4;
    cursor: pointer; }

.border-color--extra-dark-purple--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-purple--hover:hover {
    border-color: #794BC4;
    cursor: pointer; }
  .border-color--extra-dark-purple--hover:active {
    border-color: #794BC4;
    cursor: pointer; }

.color--extra-dark-pink--hover {
  transition: color 0.3s ease-in-out; }
  .color--extra-dark-pink--hover:hover {
    color: #E0245E;
    cursor: pointer; }
  .color--extra-dark-pink--hover:active {
    color: #E0245E;
    cursor: pointer; }

.bg-color--extra-dark-pink--hover {
  transition: background-color 0.3s ease-in-out; }
  .bg-color--extra-dark-pink--hover:hover {
    background-color: #E0245E;
    cursor: pointer; }
  .bg-color--extra-dark-pink--hover:active {
    background-color: #E0245E;
    cursor: pointer; }

.fill-color--extra-dark-pink--hover {
  transition: fill 0.3s ease-in-out; }
  .fill-color--extra-dark-pink--hover:hover {
    fill: #E0245E;
    cursor: pointer; }
  .fill-color--extra-dark-pink--hover:active {
    fill: #E0245E;
    cursor: pointer; }

.border-color--extra-dark-pink--hover {
  transition: border-color 0.3s ease-in-out; }
  .border-color--extra-dark-pink--hover:hover {
    border-color: #E0245E;
    cursor: pointer; }
  .border-color--extra-dark-pink--hover:active {
    border-color: #E0245E;
    cursor: pointer; }

/*
  Theme Color Utility Classes:
  Creates a class for each category and color combination.

  .theme--blue .theme-bg-color--dark--hover {
    &:hover {
      background-color: #005FD1;
    }
    &:active {
      background-color: #005FD1;
    }
  }
}

  Properties: color, background-color (bg-color), (fill) fill-color, border-color
  Categories: extra-dark, dark, light, extra-light, neutral
  Colors: orange, yellow, green, blue, purple, pink

  .theme--{color} .theme-{property}--{category}--hover {
    &:hover {
      {property}: {hoverColor}
    }
    &:active {
      {property}: {activeColor}
    }
  }

  Note: the background-color property uses bg-color in the classname.
  All others use the same class name as the CSS property they set.

*/
.theme--orange .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--orange .theme-color--extra-light--hover:hover {
    color: #FF8D57;
    cursor: pointer; }
  .theme--orange .theme-color--extra-light--hover:active {
    color: #FF8D57;
    cursor: pointer; }

.theme--orange .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--orange .theme-bg-color--extra-light--hover:hover {
    background-color: #FF8D57;
    cursor: pointer; }
  .theme--orange .theme-bg-color--extra-light--hover:active {
    background-color: #FF8D57;
    cursor: pointer; }

.theme--orange .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--orange .theme-fill-color--extra-light--hover:hover {
    fill: #FF8D57;
    cursor: pointer; }
  .theme--orange .theme-fill-color--extra-light--hover:active {
    fill: #FF8D57;
    cursor: pointer; }

.theme--orange .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--orange .theme-border-color--extra-light--hover:hover {
    border-color: #FF8D57;
    cursor: pointer; }
  .theme--orange .theme-border-color--extra-light--hover:active {
    border-color: #FF8D57;
    cursor: pointer; }

.theme--yellow .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--yellow .theme-color--extra-light--hover:hover {
    color: #FFD03F;
    cursor: pointer; }
  .theme--yellow .theme-color--extra-light--hover:active {
    color: #FFD03F;
    cursor: pointer; }

.theme--yellow .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--yellow .theme-bg-color--extra-light--hover:hover {
    background-color: #FFD03F;
    cursor: pointer; }
  .theme--yellow .theme-bg-color--extra-light--hover:active {
    background-color: #FFD03F;
    cursor: pointer; }

.theme--yellow .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--yellow .theme-fill-color--extra-light--hover:hover {
    fill: #FFD03F;
    cursor: pointer; }
  .theme--yellow .theme-fill-color--extra-light--hover:active {
    fill: #FFD03F;
    cursor: pointer; }

.theme--yellow .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--yellow .theme-border-color--extra-light--hover:hover {
    border-color: #FFD03F;
    cursor: pointer; }
  .theme--yellow .theme-border-color--extra-light--hover:active {
    border-color: #FFD03F;
    cursor: pointer; }

.theme--green .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--green .theme-color--extra-light--hover:hover {
    color: #68E090;
    cursor: pointer; }
  .theme--green .theme-color--extra-light--hover:active {
    color: #68E090;
    cursor: pointer; }

.theme--green .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--green .theme-bg-color--extra-light--hover:hover {
    background-color: #68E090;
    cursor: pointer; }
  .theme--green .theme-bg-color--extra-light--hover:active {
    background-color: #68E090;
    cursor: pointer; }

.theme--green .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--green .theme-fill-color--extra-light--hover:hover {
    fill: #68E090;
    cursor: pointer; }
  .theme--green .theme-fill-color--extra-light--hover:active {
    fill: #68E090;
    cursor: pointer; }

.theme--green .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--green .theme-border-color--extra-light--hover:hover {
    border-color: #68E090;
    cursor: pointer; }
  .theme--green .theme-border-color--extra-light--hover:active {
    border-color: #68E090;
    cursor: pointer; }

.theme--blue .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--blue .theme-color--extra-light--hover:hover {
    color: #71C9F8;
    cursor: pointer; }
  .theme--blue .theme-color--extra-light--hover:active {
    color: #71C9F8;
    cursor: pointer; }

.theme--blue .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--blue .theme-bg-color--extra-light--hover:hover {
    background-color: #71C9F8;
    cursor: pointer; }
  .theme--blue .theme-bg-color--extra-light--hover:active {
    background-color: #71C9F8;
    cursor: pointer; }

.theme--blue .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--blue .theme-fill-color--extra-light--hover:hover {
    fill: #71C9F8;
    cursor: pointer; }
  .theme--blue .theme-fill-color--extra-light--hover:active {
    fill: #71C9F8;
    cursor: pointer; }

.theme--blue .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--blue .theme-border-color--extra-light--hover:hover {
    border-color: #71C9F8;
    cursor: pointer; }
  .theme--blue .theme-border-color--extra-light--hover:active {
    border-color: #71C9F8;
    cursor: pointer; }

.theme--purple .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--purple .theme-color--extra-light--hover:hover {
    color: #A37CED;
    cursor: pointer; }
  .theme--purple .theme-color--extra-light--hover:active {
    color: #A37CED;
    cursor: pointer; }

.theme--purple .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--purple .theme-bg-color--extra-light--hover:hover {
    background-color: #A37CED;
    cursor: pointer; }
  .theme--purple .theme-bg-color--extra-light--hover:active {
    background-color: #A37CED;
    cursor: pointer; }

.theme--purple .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--purple .theme-fill-color--extra-light--hover:hover {
    fill: #A37CED;
    cursor: pointer; }
  .theme--purple .theme-fill-color--extra-light--hover:active {
    fill: #A37CED;
    cursor: pointer; }

.theme--purple .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--purple .theme-border-color--extra-light--hover:hover {
    border-color: #A37CED;
    cursor: pointer; }
  .theme--purple .theme-border-color--extra-light--hover:active {
    border-color: #A37CED;
    cursor: pointer; }

.theme--pink .theme-color--extra-light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--pink .theme-color--extra-light--hover:hover {
    color: #F6809A;
    cursor: pointer; }
  .theme--pink .theme-color--extra-light--hover:active {
    color: #F6809A;
    cursor: pointer; }

.theme--pink .theme-bg-color--extra-light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--pink .theme-bg-color--extra-light--hover:hover {
    background-color: #F6809A;
    cursor: pointer; }
  .theme--pink .theme-bg-color--extra-light--hover:active {
    background-color: #F6809A;
    cursor: pointer; }

.theme--pink .theme-fill-color--extra-light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--pink .theme-fill-color--extra-light--hover:hover {
    fill: #F6809A;
    cursor: pointer; }
  .theme--pink .theme-fill-color--extra-light--hover:active {
    fill: #F6809A;
    cursor: pointer; }

.theme--pink .theme-border-color--extra-light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--pink .theme-border-color--extra-light--hover:hover {
    border-color: #F6809A;
    cursor: pointer; }
  .theme--pink .theme-border-color--extra-light--hover:active {
    border-color: #F6809A;
    cursor: pointer; }

.theme--orange .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--orange .theme-color--light--hover:hover {
    color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-color--light--hover:active {
    color: #F45D22;
    cursor: pointer; }

.theme--orange .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--orange .theme-bg-color--light--hover:hover {
    background-color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-bg-color--light--hover:active {
    background-color: #F45D22;
    cursor: pointer; }

.theme--orange .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--orange .theme-fill-color--light--hover:hover {
    fill: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-fill-color--light--hover:active {
    fill: #F45D22;
    cursor: pointer; }

.theme--orange .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--orange .theme-border-color--light--hover:hover {
    border-color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-border-color--light--hover:active {
    border-color: #F45D22;
    cursor: pointer; }

.theme--yellow .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--yellow .theme-color--light--hover:hover {
    color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-color--light--hover:active {
    color: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--yellow .theme-bg-color--light--hover:hover {
    background-color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-bg-color--light--hover:active {
    background-color: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--yellow .theme-fill-color--light--hover:hover {
    fill: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-fill-color--light--hover:active {
    fill: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--yellow .theme-border-color--light--hover:hover {
    border-color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-border-color--light--hover:active {
    border-color: #FFAD1F;
    cursor: pointer; }

.theme--green .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--green .theme-color--light--hover:hover {
    color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-color--light--hover:active {
    color: #1FB650;
    cursor: pointer; }

.theme--green .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--green .theme-bg-color--light--hover:hover {
    background-color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-bg-color--light--hover:active {
    background-color: #1FB650;
    cursor: pointer; }

.theme--green .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--green .theme-fill-color--light--hover:hover {
    fill: #1FB650;
    cursor: pointer; }
  .theme--green .theme-fill-color--light--hover:active {
    fill: #1FB650;
    cursor: pointer; }

.theme--green .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--green .theme-border-color--light--hover:hover {
    border-color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-border-color--light--hover:active {
    border-color: #1FB650;
    cursor: pointer; }

.theme--blue .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--blue .theme-color--light--hover:hover {
    color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-color--light--hover:active {
    color: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--blue .theme-bg-color--light--hover:hover {
    background-color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-bg-color--light--hover:active {
    background-color: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--blue .theme-fill-color--light--hover:hover {
    fill: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-fill-color--light--hover:active {
    fill: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--blue .theme-border-color--light--hover:hover {
    border-color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-border-color--light--hover:active {
    border-color: #1DA1F2;
    cursor: pointer; }

.theme--purple .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--purple .theme-color--light--hover:hover {
    color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-color--light--hover:active {
    color: #794BC4;
    cursor: pointer; }

.theme--purple .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--purple .theme-bg-color--light--hover:hover {
    background-color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-bg-color--light--hover:active {
    background-color: #794BC4;
    cursor: pointer; }

.theme--purple .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--purple .theme-fill-color--light--hover:hover {
    fill: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-fill-color--light--hover:active {
    fill: #794BC4;
    cursor: pointer; }

.theme--purple .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--purple .theme-border-color--light--hover:hover {
    border-color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-border-color--light--hover:active {
    border-color: #794BC4;
    cursor: pointer; }

.theme--pink .theme-color--light--hover {
  transition: color 0.3s ease-in-out; }
  .theme--pink .theme-color--light--hover:hover {
    color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-color--light--hover:active {
    color: #E0245E;
    cursor: pointer; }

.theme--pink .theme-bg-color--light--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--pink .theme-bg-color--light--hover:hover {
    background-color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-bg-color--light--hover:active {
    background-color: #E0245E;
    cursor: pointer; }

.theme--pink .theme-fill-color--light--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--pink .theme-fill-color--light--hover:hover {
    fill: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-fill-color--light--hover:active {
    fill: #E0245E;
    cursor: pointer; }

.theme--pink .theme-border-color--light--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--pink .theme-border-color--light--hover:hover {
    border-color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-border-color--light--hover:active {
    border-color: #E0245E;
    cursor: pointer; }

.theme--orange .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--orange .theme-color--dark--hover:hover {
    color: #D82E18;
    cursor: pointer; }
  .theme--orange .theme-color--dark--hover:active {
    color: #D82E18;
    cursor: pointer; }

.theme--orange .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--orange .theme-bg-color--dark--hover:hover {
    background-color: #D82E18;
    cursor: pointer; }
  .theme--orange .theme-bg-color--dark--hover:active {
    background-color: #D82E18;
    cursor: pointer; }

.theme--orange .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--orange .theme-fill-color--dark--hover:hover {
    fill: #D82E18;
    cursor: pointer; }
  .theme--orange .theme-fill-color--dark--hover:active {
    fill: #D82E18;
    cursor: pointer; }

.theme--orange .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--orange .theme-border-color--dark--hover:hover {
    border-color: #D82E18;
    cursor: pointer; }
  .theme--orange .theme-border-color--dark--hover:active {
    border-color: #D82E18;
    cursor: pointer; }

.theme--yellow .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--yellow .theme-color--dark--hover:hover {
    color: #F98E00;
    cursor: pointer; }
  .theme--yellow .theme-color--dark--hover:active {
    color: #F98E00;
    cursor: pointer; }

.theme--yellow .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--yellow .theme-bg-color--dark--hover:hover {
    background-color: #F98E00;
    cursor: pointer; }
  .theme--yellow .theme-bg-color--dark--hover:active {
    background-color: #F98E00;
    cursor: pointer; }

.theme--yellow .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--yellow .theme-fill-color--dark--hover:hover {
    fill: #F98E00;
    cursor: pointer; }
  .theme--yellow .theme-fill-color--dark--hover:active {
    fill: #F98E00;
    cursor: pointer; }

.theme--yellow .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--yellow .theme-border-color--dark--hover:hover {
    border-color: #F98E00;
    cursor: pointer; }
  .theme--yellow .theme-border-color--dark--hover:active {
    border-color: #F98E00;
    cursor: pointer; }

.theme--green .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--green .theme-color--dark--hover:hover {
    color: #008951;
    cursor: pointer; }
  .theme--green .theme-color--dark--hover:active {
    color: #008951;
    cursor: pointer; }

.theme--green .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--green .theme-bg-color--dark--hover:hover {
    background-color: #008951;
    cursor: pointer; }
  .theme--green .theme-bg-color--dark--hover:active {
    background-color: #008951;
    cursor: pointer; }

.theme--green .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--green .theme-fill-color--dark--hover:hover {
    fill: #008951;
    cursor: pointer; }
  .theme--green .theme-fill-color--dark--hover:active {
    fill: #008951;
    cursor: pointer; }

.theme--green .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--green .theme-border-color--dark--hover:hover {
    border-color: #008951;
    cursor: pointer; }
  .theme--green .theme-border-color--dark--hover:active {
    border-color: #008951;
    cursor: pointer; }

.theme--blue .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--blue .theme-color--dark--hover:hover {
    color: #005FD1;
    cursor: pointer; }
  .theme--blue .theme-color--dark--hover:active {
    color: #005FD1;
    cursor: pointer; }

.theme--blue .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--blue .theme-bg-color--dark--hover:hover {
    background-color: #005FD1;
    cursor: pointer; }
  .theme--blue .theme-bg-color--dark--hover:active {
    background-color: #005FD1;
    cursor: pointer; }

.theme--blue .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--blue .theme-fill-color--dark--hover:hover {
    fill: #005FD1;
    cursor: pointer; }
  .theme--blue .theme-fill-color--dark--hover:active {
    fill: #005FD1;
    cursor: pointer; }

.theme--blue .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--blue .theme-border-color--dark--hover:hover {
    border-color: #005FD1;
    cursor: pointer; }
  .theme--blue .theme-border-color--dark--hover:active {
    border-color: #005FD1;
    cursor: pointer; }

.theme--purple .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--purple .theme-color--dark--hover:hover {
    color: #4F0299;
    cursor: pointer; }
  .theme--purple .theme-color--dark--hover:active {
    color: #4F0299;
    cursor: pointer; }

.theme--purple .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--purple .theme-bg-color--dark--hover:hover {
    background-color: #4F0299;
    cursor: pointer; }
  .theme--purple .theme-bg-color--dark--hover:active {
    background-color: #4F0299;
    cursor: pointer; }

.theme--purple .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--purple .theme-fill-color--dark--hover:hover {
    fill: #4F0299;
    cursor: pointer; }
  .theme--purple .theme-fill-color--dark--hover:active {
    fill: #4F0299;
    cursor: pointer; }

.theme--purple .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--purple .theme-border-color--dark--hover:hover {
    border-color: #4F0299;
    cursor: pointer; }
  .theme--purple .theme-border-color--dark--hover:active {
    border-color: #4F0299;
    cursor: pointer; }

.theme--pink .theme-color--dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--pink .theme-color--dark--hover:hover {
    color: #A01744;
    cursor: pointer; }
  .theme--pink .theme-color--dark--hover:active {
    color: #A01744;
    cursor: pointer; }

.theme--pink .theme-bg-color--dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--pink .theme-bg-color--dark--hover:hover {
    background-color: #A01744;
    cursor: pointer; }
  .theme--pink .theme-bg-color--dark--hover:active {
    background-color: #A01744;
    cursor: pointer; }

.theme--pink .theme-fill-color--dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--pink .theme-fill-color--dark--hover:hover {
    fill: #A01744;
    cursor: pointer; }
  .theme--pink .theme-fill-color--dark--hover:active {
    fill: #A01744;
    cursor: pointer; }

.theme--pink .theme-border-color--dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--pink .theme-border-color--dark--hover:hover {
    border-color: #A01744;
    cursor: pointer; }
  .theme--pink .theme-border-color--dark--hover:active {
    border-color: #A01744;
    cursor: pointer; }

.theme--orange .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--orange .theme-color--extra-dark--hover:hover {
    color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-color--extra-dark--hover:active {
    color: #F45D22;
    cursor: pointer; }

.theme--orange .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--orange .theme-bg-color--extra-dark--hover:hover {
    background-color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-bg-color--extra-dark--hover:active {
    background-color: #F45D22;
    cursor: pointer; }

.theme--orange .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--orange .theme-fill-color--extra-dark--hover:hover {
    fill: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-fill-color--extra-dark--hover:active {
    fill: #F45D22;
    cursor: pointer; }

.theme--orange .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--orange .theme-border-color--extra-dark--hover:hover {
    border-color: #F45D22;
    cursor: pointer; }
  .theme--orange .theme-border-color--extra-dark--hover:active {
    border-color: #F45D22;
    cursor: pointer; }

.theme--yellow .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--yellow .theme-color--extra-dark--hover:hover {
    color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-color--extra-dark--hover:active {
    color: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--yellow .theme-bg-color--extra-dark--hover:hover {
    background-color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-bg-color--extra-dark--hover:active {
    background-color: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--yellow .theme-fill-color--extra-dark--hover:hover {
    fill: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-fill-color--extra-dark--hover:active {
    fill: #FFAD1F;
    cursor: pointer; }

.theme--yellow .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--yellow .theme-border-color--extra-dark--hover:hover {
    border-color: #FFAD1F;
    cursor: pointer; }
  .theme--yellow .theme-border-color--extra-dark--hover:active {
    border-color: #FFAD1F;
    cursor: pointer; }

.theme--green .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--green .theme-color--extra-dark--hover:hover {
    color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-color--extra-dark--hover:active {
    color: #1FB650;
    cursor: pointer; }

.theme--green .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--green .theme-bg-color--extra-dark--hover:hover {
    background-color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-bg-color--extra-dark--hover:active {
    background-color: #1FB650;
    cursor: pointer; }

.theme--green .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--green .theme-fill-color--extra-dark--hover:hover {
    fill: #1FB650;
    cursor: pointer; }
  .theme--green .theme-fill-color--extra-dark--hover:active {
    fill: #1FB650;
    cursor: pointer; }

.theme--green .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--green .theme-border-color--extra-dark--hover:hover {
    border-color: #1FB650;
    cursor: pointer; }
  .theme--green .theme-border-color--extra-dark--hover:active {
    border-color: #1FB650;
    cursor: pointer; }

.theme--blue .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--blue .theme-color--extra-dark--hover:hover {
    color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-color--extra-dark--hover:active {
    color: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--blue .theme-bg-color--extra-dark--hover:hover {
    background-color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-bg-color--extra-dark--hover:active {
    background-color: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--blue .theme-fill-color--extra-dark--hover:hover {
    fill: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-fill-color--extra-dark--hover:active {
    fill: #1DA1F2;
    cursor: pointer; }

.theme--blue .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--blue .theme-border-color--extra-dark--hover:hover {
    border-color: #1DA1F2;
    cursor: pointer; }
  .theme--blue .theme-border-color--extra-dark--hover:active {
    border-color: #1DA1F2;
    cursor: pointer; }

.theme--purple .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--purple .theme-color--extra-dark--hover:hover {
    color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-color--extra-dark--hover:active {
    color: #794BC4;
    cursor: pointer; }

.theme--purple .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--purple .theme-bg-color--extra-dark--hover:hover {
    background-color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-bg-color--extra-dark--hover:active {
    background-color: #794BC4;
    cursor: pointer; }

.theme--purple .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--purple .theme-fill-color--extra-dark--hover:hover {
    fill: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-fill-color--extra-dark--hover:active {
    fill: #794BC4;
    cursor: pointer; }

.theme--purple .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--purple .theme-border-color--extra-dark--hover:hover {
    border-color: #794BC4;
    cursor: pointer; }
  .theme--purple .theme-border-color--extra-dark--hover:active {
    border-color: #794BC4;
    cursor: pointer; }

.theme--pink .theme-color--extra-dark--hover {
  transition: color 0.3s ease-in-out; }
  .theme--pink .theme-color--extra-dark--hover:hover {
    color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-color--extra-dark--hover:active {
    color: #E0245E;
    cursor: pointer; }

.theme--pink .theme-bg-color--extra-dark--hover {
  transition: background-color 0.3s ease-in-out; }
  .theme--pink .theme-bg-color--extra-dark--hover:hover {
    background-color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-bg-color--extra-dark--hover:active {
    background-color: #E0245E;
    cursor: pointer; }

.theme--pink .theme-fill-color--extra-dark--hover {
  transition: fill 0.3s ease-in-out; }
  .theme--pink .theme-fill-color--extra-dark--hover:hover {
    fill: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-fill-color--extra-dark--hover:active {
    fill: #E0245E;
    cursor: pointer; }

.theme--pink .theme-border-color--extra-dark--hover {
  transition: border-color 0.3s ease-in-out; }
  .theme--pink .theme-border-color--extra-dark--hover:hover {
    border-color: #E0245E;
    cursor: pointer; }
  .theme--pink .theme-border-color--extra-dark--hover:active {
    border-color: #E0245E;
    cursor: pointer; }

/*

font mixin
$key: type style key (ex. bold-24 or roman-24). See typography.json for options.
$breakpoint: (optional) breakpoint key (ex. full or tablet). See breakpoints.json for options.

@include font(bold-24);

When used without a breakpoint specified this mixin will produce font properties
wrapped in media queries. It's a simple way to apply fully responsive type styles
to a class or element.

@include font(bold-24, full);

If a breakpoint is specified there will be only a single set of font properties
that are NOT wrapped in any media queries.

*/
/*

  color(yellow) single argument defaults to dark colors
  color(light, yellow) returns light yellow

*/
/* rounded corners
  usage: border-radius( baseline( n ) )
*/
/*

https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/

The mixin assumes you'll be nesting an element with the class of content inside your initial block

<div class="sixteen-nine">
  <div class="content">
    insert content here
    this will maintain a 16:9 aspect ratio
  </div>
</div>

*/
.region-selector {
  transition: opacity 0.3s ease-in-out; }
  .region-selector:hover {
    opacity: 0.6; }
  .region-selector:active {
    opacity: 0.6; }
  .region-selector .current-region {
    text-decoration: none; }
    .region-selector .current-region > svg {
      fill: #FFFFFF;
      height: 0.75rem;
      left: 4px;
      pointer-events: none;
      position: relative;
      top: 2px;
      -webkit-transform: rotate(-90deg);
              transform: rotate(-90deg);
      width: 0.75rem; }
      @media (min-width: 768px) {
        .region-selector .current-region > svg {
          -webkit-transform: rotate(0deg);
                  transform: rotate(0deg); } }
  .region-selector a:not(.current-region) {
    display: none;
    text-decoration: none; }
  .region-selector.modal {
    position: fixed;
    top: 0;
    height: 100vh;
    width: calc(100vw + 20px);
    margin-right: -20px;
    opacity: 0;
    transition: opacity .5s linear;
    z-index: 12; }
    .region-selector.modal .modal__close {
      cursor: pointer;
      position: relative;
      text-align: left;
      height: 3.75rem;
      padding: 1.5rem;
      top: -5px; }
      .region-selector.modal .modal__close svg {
        position: absolute;
        top: 0;
        left: 1.125rem;
        -webkit-transform: scale(0.25);
                transform: scale(0.25);
        margin-top: 5px;
        margin-right: 5px;
        fill: #FFFFFF; }
        @media (min-width: 768px) {
          .region-selector.modal .modal__close svg {
            position: static;
            -webkit-transform: scale(0.6);
                    transform: scale(0.6);
            fill: #657786; } }
      .region-selector.modal .modal__close.cross {
        text-align: right;
        padding-bottom: 3.75rem; }
        .region-selector.modal .modal__close.cross svg {
          position: relative;
          top: -5px;
          left: -10px;
          -webkit-transform: scale(0.6);
                  transform: scale(0.6);
          fill: #657786; }
      .region-selector.modal .modal__close span {
        position: absolute;
        left: 2.8125rem;
        top: 1.7625rem; }
      @media (min-width: 768px) {
        .region-selector.modal .modal__close {
          text-align: right;
          float: right; } }
    .region-selector.modal .modal__label {
      width: 100%;
      padding: 4.5rem 1.5rem;
      float: left; }
      @media (min-width: 768px) {
        .region-selector.modal .modal__label {
          width: 30%;
          padding: 0 10%;
          margin-top: 2.25rem;
          clear: right; } }
    .region-selector.modal .modal__region-list {
      position: absolute;
      top: 0;
      left: -10px;
      overflow-y: scroll;
      width: 100%;
      height: calc(100vh - 14.25rem);
      padding: 0 2.25rem;
      margin-top: 13.5rem;
      float: left; }
      .region-selector.modal .modal__region-list ::-webkit-scrollbar {
        display: none; }
      .region-selector.modal .modal__region-list a.current-region,
      .region-selector.modal .modal__region-list a:not(.current-region) {
        display: block;
        border-bottom: 1px solid rgba(255, 255, 255, 0.4);
        padding-bottom: 1.5rem;
        margin-bottom: 1.5rem; }
        @media (min-width: 768px) {
          .region-selector.modal .modal__region-list a.current-region,
          .region-selector.modal .modal__region-list a:not(.current-region) {
            padding-bottom: 1.5rem;
            margin-bottom: 0;
            float: left;
            clear: left; } }
      @media (min-width: 768px) {
        .region-selector.modal .modal__region-list {
          right: 0;
          left: auto;
          height: calc(100vh - 7.5rem);
          width: 70%;
          padding: 0;
          margin-top: 7.5rem; } }
    .region-selector.modal.open {
      opacity: 1; }
      .region-selector.modal.open.open--desktop {
        background: rgba(255, 255, 255, 0.95); }
        .region-selector.modal.open.open--desktop .modal__label {
          display: none; }
          @media (min-width: 768px) {
            .region-selector.modal.open.open--desktop .modal__label {
              display: block; } }
    @media (min-width: 768px) {
      .region-selector.modal {
        background: rgba(255, 255, 255, 0.95); } }
  .region-selector [class$='-svg-container'] {
    display: none; }
/*

font mixin
$key: type style key (ex. bold-24 or roman-24). See typography.json for options.
$breakpoint: (optional) breakpoint key (ex. full or tablet). See breakpoints.json for options.

@include font(bold-24);

When used without a breakpoint specified this mixin will produce font properties
wrapped in media queries. It's a simple way to apply fully responsive type styles
to a class or element.

@include font(bold-24, full);

If a breakpoint is specified there will be only a single set of font properties
that are NOT wrapped in any media queries.

*/
/*

  color(yellow) single argument defaults to dark colors
  color(light, yellow) returns light yellow

*/
/* rounded corners
  usage: border-radius( baseline( n ) )
*/
/*

https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/

The mixin assumes you'll be nesting an element with the class of content inside your initial block

<div class="sixteen-nine">
  <div class="content">
    insert content here
    this will maintain a 16:9 aspect ratio
  </div>
</div>

*/
.search-masthead {
  position: relative;
  padding: 5.2%;
  padding-top: 3rem;
  padding-bottom: 4.5rem; }
  .search-masthead > section:first-child {
    transition-property: color, fill, border-color;
    transition-delay: 1s;
    transition-timing-function: ease-in-out; }
  .search-masthead .search-bar {
    position: relative;
    left: 0;
    right: 0;
    bottom: 0;
    margin: auto; }
    @media (min-width: 768px) {
      .search-masthead .search-bar {
        position: absolute;
        margin-top: 6rem;
        bottom: 4.5rem; } }
  @media (min-width: 768px) {
    .search-masthead {
      height: 15rem;
      padding: 0;
      margin-bottom: 4.5rem; } }
.login-container {
  display: none; }

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay93ZWJwYWNrL2NvcmUvc3R5bGUvdXRpbGl0eS9faG92ZXIuc2Nzcz9mYjRiKiIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay9jb3JlL3ZhcmlhYmxlcy9jb2xvcnMuanNvbj9iMGQ2KiIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay9jb3JlL3ZhcmlhYmxlcy9tb3Rpb24uanNvbj85YzFkKioqKiIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay93ZWJwYWNrL2NvcmUvc3R5bGUvX21peGluLnNjc3M/ZDI4NCoqKioiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9+L3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3M/M2Y0OCoqKioiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9jb21wb25lbnRzL3VuaXZlcnNhbC91MDEtbmF2aWdhdGlvbi93ZWJwYWNrL2luZGV4LnNjc3M/YjYyNCIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvdmFyaWFibGVzL3R5cG9ncmFwaHkuanNvbj8wZjY3KioqKiIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvdmFyaWFibGVzL2NvbG9ycy5qc29uP2JkZWIqKioqIiwid2VicGFjazovLy93ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvY29tcG9uZW50cy91bml2ZXJzYWwvdTA0LXNlYXJjaC1iYXIvd2VicGFjay9pbmRleC5zY3NzP2M2NTkiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9+L3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2Nzcz9jZjcxKioqKiIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay93ZWJwYWNrL34vc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzP2IyMGUqKioqIiwid2VicGFjazovLy93ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svfi9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2Nzcz8xOGVjKioqKiIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay93ZWJwYWNrL34vc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzPzI4NWMqKioqIiwid2VicGFjazovLy93ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvY29tcG9uZW50cy91bml2ZXJzYWwvdTAyLWZvb3Rlci93ZWJwYWNrL2luZGV4LnNjc3M/OTBlNSIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2NvbXBvbmVudHMvdW5pdmVyc2FsL3UwMy1yZWdpb24tc2VsZWN0b3Ivd2VicGFjay9pbmRleC5zY3NzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvY29tcG9uZW50cy91bml2ZXJzYWwvdTA3LXNlYXJjaC1tYXN0aGVhZC93ZWJwYWNrL2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9jb21wb25lbnRzL3VuaXZlcnNhbC91MTAtdXNlci1wcm9maWxlL3dlYnBhY2svaW5kZXguc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwRkk7RUFDRSxlQzNGc2I7RUQ0RnRiLHFDRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsYUF1Q2M7SUFvRFYsZ0JBQWdCLEVBQ2pCO0VBUEg7SUFyRkEsYUEy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cEQ7RUFaRDtJQUlJLGVDckptTztJRHNKbk8sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKbU87SUQySm5PLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySm1PO0lEc0puTyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKbU87SUQySm5PLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKbU87SURzSm5PLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSm1PO0lEMkpuTyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckptTztJRHNKbk8sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSm1PO0lEMkpuTyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySm1QO0lEc0puUCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUptUDtJRDJKblAsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKbVA7SURzSm5QLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUptUDtJRDJKblAsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckptUDtJRHNKblAsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKbVA7SUQySm5QLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySm1QO0lEc0puUCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKbVA7SUQySm5QLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKa1E7SURzSmxRLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSmtRO0lEMkpsUSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckprUTtJRHNKbFEsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSmtRO0lEMkpsUSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySmtRO0lEc0psUSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUprUTtJRDJKbFEsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKa1E7SURzSmxRLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUprUTtJRDJKbFEsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDckpnUjtJRHNKaFIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKZ1I7SUQySmhSLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySmdSO0lEc0poUixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKZ1I7SUQySmhSLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKZ1I7SURzSmhSLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSmdSO0lEMkpoUixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckpnUjtJRHNKaFIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSmdSO0lEMkpoUixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySmdTO0lEc0poUyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUpnUztJRDJKaFMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKZ1M7SURzSmhTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUpnUztJRDJKaFMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckpnUztJRHNKaFMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKZ1M7SUQySmhTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySmdTO0lEc0poUyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKZ1M7SUQySmhTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKOFM7SURzSjlTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSjhTO0lEMko5UyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDcko4UztJRHNKOVMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSjhTO0lEMko5UyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySjhTO0lEc0o5UyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUo4UztJRDJKOVMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKOFM7SURzSjlTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUo4UztJRDJKOVMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDckorSDtJRHNKL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKK0g7SUQySi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySitIO0lEc0ovSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKK0g7SUQySi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKK0g7SURzSi9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSitIO0lEMkovSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckorSDtJRHNKL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSitIO0lEMkovSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySitJO0lEc0ovSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUorSTtJRDJKL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKK0k7SURzSi9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUorSTtJRDJKL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckorSTtJRHNKL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKK0k7SUQySi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySitJO0lEc0ovSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKK0k7SUQySi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKOEo7SURzSjlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSjhKO0lEMko5SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDcko4SjtJRHNKOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSjhKO0lEMko5SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySjhKO0lEc0o5SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUo4SjtJRDJKOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKOEo7SURzSjlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUo4SjtJRDJKOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDcko0SztJRHNKNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKNEs7SUQySjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySjRLO0lEc0o1SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKNEs7SUQySjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKNEs7SURzSjVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSjRLO0lEMko1SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDcko0SztJRHNKNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSjRLO0lEMko1SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySjRMO0lEc0o1TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUo0TDtJRDJKNUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKNEw7SURzSjVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUo0TDtJRDJKNUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDcko0TDtJRHNKNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKNEw7SUQySjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySjRMO0lEc0o1TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKNEw7SUQySjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKME07SURzSjFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSjBNO0lEMkoxTSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckowTTtJRHNKMU0sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSjBNO0lEMkoxTSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySjBNO0lEc0oxTSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUowTTtJRDJKMU0sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKME07SURzSjFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUowTTtJRDJKMU0sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDcko0QjtJRHNKNUIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKNEI7SUQySjVCLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySjRCO0lEc0o1QixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKNEI7SUQySjVCLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKNEI7SURzSjVCLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSjRCO0lEMko1QixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDcko0QjtJRHNKNUIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSjRCO0lEMko1QixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySjRDO0lEc0o1QyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUo0QztJRDJKNUMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKNEM7SURzSjVDLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUo0QztJRDJKNUMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDcko0QztJRHNKNUMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKNEM7SUQySjVDLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySjRDO0lEc0o1QyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKNEM7SUQySjVDLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKMkQ7SURzSjNELGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSjJEO0lEMkozRCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckoyRDtJRHNKM0QsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSjJEO0lEMkozRCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySjJEO0lEc0ozRCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUoyRDtJRDJKM0QsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKMkQ7SURzSjNELGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUoyRDtJRDJKM0QsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDckp5RTtJRHNKekUsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKeUU7SUQySnpFLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySnlFO0lEc0p6RSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKeUU7SUQySnpFLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKeUU7SURzSnpFLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSnlFO0lEMkp6RSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckp5RTtJRHNKekUsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSnlFO0lEMkp6RSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySnlGO0lEc0p6RixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUp5RjtJRDJKekYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKeUY7SURzSnpGLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUp5RjtJRDJKekYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckp5RjtJRHNKekYsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKeUY7SUQySnpGLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySnlGO0lEc0p6RixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKeUY7SUQySnpGLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKdUc7SURzSnZHLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSnVHO0lEMkp2RyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckp1RztJRHNKdkcsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSnVHO0lEMkp2RyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySnVHO0lEc0p2RyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUp1RztJRDJKdkcsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKdUc7SURzSnZHLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUp1RztJRDJKdkcsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDckorSDtJRHNKL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKK0g7SUQySi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySitIO0lEc0ovSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKK0g7SUQySi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKK0g7SURzSi9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSitIO0lEMkovSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckorSDtJRHNKL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSitIO0lEMkovSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySitJO0lEc0ovSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUorSTtJRDJKL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKK0k7SURzSi9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUorSTtJRDJKL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckorSTtJRHNKL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKK0k7SUQySi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySitJO0lEc0ovSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKK0k7SUQySi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKOEo7SURzSjlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSjhKO0lEMko5SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDcko4SjtJRHNKOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSjhKO0lEMko5SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySjhKO0lEc0o5SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUo4SjtJRDJKOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKOEo7SURzSjlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUo4SjtJRDJKOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDcko0SztJRHNKNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKNEs7SUQySjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySjRLO0lEc0o1SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKNEs7SUQySjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKNEs7SURzSjVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSjRLO0lEMko1SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDcko0SztJRHNKNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSjRLO0lEMko1SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySjRMO0lEc0o1TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUo0TDtJRDJKNUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKNEw7SURzSjVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUo0TDtJRDJKNUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDcko0TDtJRHNKNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKNEw7SUQySjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySjRMO0lEc0o1TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKNEw7SUQySjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKME07SURzSjFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSjBNO0lEMkoxTSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckowTTtJRHNKMU0sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSjBNO0lEMkoxTSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySjBNO0lEc0oxTSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUowTTtJRDJKMU0sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKME07SURzSjFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUowTTtJRDJKMU0sZ0JBQWdCLEVBQ2pCOztBQU9UOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE4QkU7QUFNSTtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNbU87SUQ0TW5PLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTm1PO0lEaU5uTyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM01tTztJRDRNbk8sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTm1PO0lEaU5uTyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTW1PO0lENE1uTyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE5tTztJRGlObk8sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNbU87SUQ0TW5PLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE5tTztJRGlObk8sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM01tUDtJRDRNblAsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hObVA7SURpTm5QLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTW1QO0lENE1uUCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hObVA7SURpTm5QLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNbVA7SUQ0TW5QLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTm1QO0lEaU5uUCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM01tUDtJRDRNblAsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTm1QO0lEaU5uUCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTWtRO0lENE1sUSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE5rUTtJRGlObFEsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNa1E7SUQ0TWxRLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE5rUTtJRGlObFEsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM01rUTtJRDRNbFEsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOa1E7SURpTmxRLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTWtRO0lENE1sUSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOa1E7SURpTmxRLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNZ1I7SUQ0TWhSLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTmdSO0lEaU5oUixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM01nUjtJRDRNaFIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTmdSO0lEaU5oUixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTWdSO0lENE1oUixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE5nUjtJRGlOaFIsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNZ1I7SUQ0TWhSLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE5nUjtJRGlOaFIsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM01nUztJRDRNaFMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hOZ1M7SURpTmhTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTWdTO0lENE1oUyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hOZ1M7SURpTmhTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNZ1M7SUQ0TWhTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTmdTO0lEaU5oUyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM01nUztJRDRNaFMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTmdTO0lEaU5oUyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTThTO0lENE05UyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE44UztJRGlOOVMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNOFM7SUQ0TTlTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE44UztJRGlOOVMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM004UztJRDRNOVMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOOFM7SURpTjlTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTThTO0lENE05UyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOOFM7SURpTjlTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNK0g7SUQ0TS9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTitIO0lEaU4vSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM00rSDtJRDRNL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTitIO0lEaU4vSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTStIO0lENE0vSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE4rSDtJRGlOL0gsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNK0g7SUQ0TS9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE4rSDtJRGlOL0gsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM00rSTtJRDRNL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hOK0k7SURpTi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTStJO0lENE0vSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hOK0k7SURpTi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNK0k7SUQ0TS9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTitJO0lEaU4vSSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM00rSTtJRDRNL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTitJO0lEaU4vSSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTThKO0lENE05SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE44SjtJRGlOOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNOEo7SUQ0TTlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE44SjtJRGlOOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM004SjtJRDRNOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOOEo7SURpTjlKLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTThKO0lENE05SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOOEo7SURpTjlKLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNNEs7SUQ0TTVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTjRLO0lEaU41SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM000SztJRDRNNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTjRLO0lEaU41SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTTRLO0lENE01SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE40SztJRGlONUssZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNNEs7SUQ0TTVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE40SztJRGlONUssZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM000TDtJRDRNNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hONEw7SURpTjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTTRMO0lENE01TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hONEw7SURpTjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNNEw7SUQ0TTVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTjRMO0lEaU41TCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM000TDtJRDRNNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTjRMO0lEaU41TCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTTBNO0lENE0xTSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE4wTTtJRGlOMU0sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNME07SUQ0TTFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE4wTTtJRGlOMU0sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM00wTTtJRDRNMU0sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOME07SURpTjFNLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTTBNO0lENE0xTSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOME07SURpTjFNLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNNEI7SUQ0TTVCLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTjRCO0lEaU41QixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM000QjtJRDRNNUIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTjRCO0lEaU41QixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTTRCO0lENE01QixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE40QjtJRGlONUIsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNNEI7SUQ0TTVCLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE40QjtJRGlONUIsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM000QztJRDRNNUMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hONEM7SURpTjVDLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTTRDO0lENE01QyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hONEM7SURpTjVDLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNNEM7SUQ0TTVDLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTjRDO0lEaU41QyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM000QztJRDRNNUMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTjRDO0lEaU41QyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTTJEO0lENE0zRCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE4yRDtJRGlOM0QsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNMkQ7SUQ0TTNELGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE4yRDtJRGlOM0QsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM00yRDtJRDRNM0QsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOMkQ7SURpTjNELGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTTJEO0lENE0zRCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOMkQ7SURpTjNELGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNeUU7SUQ0TXpFLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTnlFO0lEaU56RSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM015RTtJRDRNekUsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTnlFO0lEaU56RSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTXlFO0lENE16RSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE55RTtJRGlOekUsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNeUU7SUQ0TXpFLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE55RTtJRGlOekUsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM015RjtJRDRNekYsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hOeUY7SURpTnpGLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTXlGO0lENE16RixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hOeUY7SURpTnpGLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNeUY7SUQ0TXpGLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTnlGO0lEaU56RixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM015RjtJRDRNekYsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTnlGO0lEaU56RixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTXVHO0lENE12RyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE51RztJRGlOdkcsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNdUc7SUQ0TXZHLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE51RztJRGlOdkcsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM011RztJRDRNdkcsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOdUc7SURpTnZHLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTXVHO0lENE12RyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOdUc7SURpTnZHLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNK0g7SUQ0TS9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTitIO0lEaU4vSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM00rSDtJRDRNL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTitIO0lEaU4vSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTStIO0lENE0vSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE4rSDtJRGlOL0gsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNK0g7SUQ0TS9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE4rSDtJRGlOL0gsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM00rSTtJRDRNL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hOK0k7SURpTi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTStJO0lENE0vSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hOK0k7SURpTi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNK0k7SUQ0TS9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTitJO0lEaU4vSSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM00rSTtJRDRNL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTitJO0lEaU4vSSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTThKO0lENE05SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE44SjtJRGlOOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNOEo7SUQ0TTlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE44SjtJRGlOOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM004SjtJRDRNOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOOEo7SURpTjlKLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTThKO0lENE05SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOOEo7SURpTjlKLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNNEs7SUQ0TTVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTjRLO0lEaU41SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM000SztJRDRNNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTjRLO0lEaU41SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTTRLO0lENE01SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE40SztJRGlONUssZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNNEs7SUQ0TTVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE40SztJRGlONUssZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM000TDtJRDRNNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hONEw7SURpTjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTTRMO0lENE01TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hONEw7SURpTjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNNEw7SUQ0TTVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTjRMO0lEaU41TCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM000TDtJRDRNNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTjRMO0lEaU41TCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTTBNO0lENE0xTSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE4wTTtJRGlOMU0sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNME07SUQ0TTFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE4wTTtJRGlOMU0sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM00wTTtJRDRNMU0sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOME07SURpTjFNLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTTBNO0lENE0xTSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOME07SURpTjFNLGdCQUFnQixFQUNqQjs7QUcvS1Q7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBeUJGOzs7OztFQUtFO0FBYUY7O0VBRUU7QUFPRjs7Ozs7Ozs7Ozs7OztFQWFFO0FDbkVFO0VDekNKO0lBSU0scUJBQXFCO0lBRXJCLHNCQUFzQixFQUV6Qjs7QUFHSDtFQUNFLG1CQUFtQjtFQUNuQixPQUFPO0VBQ1AsUUFBUTtFQUNSLFNBQVM7RUFDVCxhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixhRk5xQjtFRU9yQixZQUFZO0VBQ1oscUJBQWM7RUFBZCxxQkFBYztFQUFkLGNBQWMsRUE2UWY7RUF2UkQ7SUFZSSxnQkFBZ0IsRUFDakI7RUFiSDtJQWVJLHdCRmJtQjtJRWNuQixZQUFZLEVBS2I7SURTQztNQzlCSjtRQWtCTSx5QkZoQmlCO1FFaUJqQixpQkFBaUIsRUFFcEI7RURTQztJQzlCSjtNQXVCSSxpQkFBaUIsRUFnUXBCO0VBdlJEO0lBMEJJLDhCQUE4QixFQUMvQjtFQTNCSDtJQTZCSSxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLG1CQUFtQixFQStDcEI7SURoREM7TUM5Qko7UUFpQ00sYUYvQmlCLEVFNEVwQjtJRGhEQztNQzlCSjtRQXFDUSw4QkFBOEIsRUFFakM7SUF2Q0w7TUF5Q00sYUZ2Q2lCO01Fd0NqQixZQUFZO01BQ1osV0FBVztNQUNYLG9CQUFvQjtNQUNwQixZQUFZO01BQ1osNEJBQVk7TUFDWixtQkFBbUIsRUFVcEI7TUQzQkQ7UUM5Qko7VUFpRFEsT0FBTztVQUNQLFlBQVk7VUFDWixXQUFXO1VBQ1gsb0JBQW9CO1VBQ3BCLFlBQVk7VUFDWixhQUFhO1VBQ2IsZUFBZSxFQUVsQjtJQXpETDtNQW9FTSxlQUFlLEVBQ2hCO01BckVMO1FGTUUsaUZBQWlGO1FBQ2pGLGlCRzNCODhCO1FINEI5OEIsbUJBTnFCO1FBT3JCLG9CQVBxQjtRQVFyQix3QkFBZ0I7UUFDaEIsVUFBVTtRQUNWLG9CQUEwRDtRRWtEbEQsMEJBQXVDLEVBSXhDO1FEcENMO1VDOUJKO1lGTUUsaUZBQWlGO1lBQ2pGLGlCRzNCKzNCO1lINEIvM0IscUJBTnFCO1lBT3JCLG9CQVBxQjtZQVFyQix5QkFBZ0I7WUFDaEIsVUFBVTtZQUNWLG9CQUEwRCxFRXNEbkQ7SUFsRVQ7TUF5RVUsaUJBQWlCO01BQ2pCLG1DQUFpQjtjQUFqQiwyQkFBaUIsRUFDbEI7RUEzRVQ7SUFpRk0sWUFBWSxFQXVEYjtJQXhJTDtNQXFGUSxlQUFlO01BQ2YsWUFBWTtNQUNaLHNCQUFzQixFQWtCdkI7TUF6R1A7UUEwRlUsMEJBQW9CO1lBQXBCLHVCQUFvQjtnQkFBcEIsb0JBQW9CO1FBQ3BCLHFCQUFjO1FBQWQscUJBQWM7UUFBZCxjQUFjO1FBQ2QsWUFBWTtRQUNaLHNCRjNGYSxFRXNHZDtRRDFFTDtVQzlCSjtZQWdHWSxtQkY5RlcsRUVzR2Q7UUF4R1Q7VUFvR1ksY0ZsR1c7VUVtR1gsZUZuR1c7VUVvR1gsY0UxSGdpQixFRjJIamlCO0lBdkdYO01BNkdRLGVBQWU7TUFDZixZQUFZO01BQ1osZ0JBQWdCO01BQ2hCLG9CRjlHZTtNRStHZix3REFBaUM7TUFDakMsZ0NBQWlCO2NBQWpCLHdCQUFpQixFQXFCbEI7TUF2SVA7UUFzSFUsYUwvRVEsRUtnRlQ7TUF2SFQ7UUEySFUsYUxoRVEsRUtpRVQ7TUE1SFQ7UUErSFUsY0VuSmtpQjtRRm9KbGlCLGdCRjlIYTtRRStIYixxQ0hySmlEO1FHc0pqRCxlRmhJYSxFRWlJZDtNRHJHTDtRQzlCSjtVQXFJVSxjQUFjLEVBRWpCO0VBdklQO0lBMklJLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osV0FBVztJQUNYLFVBQVU7SUFDVixpQkFBaUI7SUFDakIsWUFBWTtJQUNaLFdBQVc7SUFDWCxtQkFBbUI7SUFDbkIsWUFBWSxFQWdEYjtJRHJLQztNQzlCSjtRQXFKTSxZQUFZO1FBQ1osV0FBVztRQUNYLG9CQUFvQjtRQUNwQixZQUFZO1FBQ1osb0JGdkppQixFRWlNcEI7SUFuTUg7TUE0Sk0sZUFBZSxFQUloQjtNRGxJRDtRQzlCSjtVQThKUSxjQUFjLEVBRWpCO0lBaEtMO01Ba0tNLGtCQUFzQjtNQUN0QixrREFBNkI7TUFDN0IsZUFBZTtNQUNmLFlBQVksRUF1QmI7TUQ5SkQ7UUM5Qko7VUF1S1EsZUFBZTtVQUNmLFlBQVk7VUFDWixZQUFZO1VBQ1osc0JBQTBCO1VBQzFCLG9CQUFvQixFQWlCdkI7TUE1TEw7UUE4S1EsaUJBQWlCO1FBQ2pCLG9CQUFvQixFQUNyQjtNQWhMUDs7UUZNRSxpRkFBaUY7UUFDakYsaUJHM0J1cEI7UUg0QnZwQixrQkFOcUI7UUFPckIsb0JBUHFCO1FBUXJCLHFCQUFnQjtRQUNoQixVQUFVO1FBQ1Ysb0JBQTBEO1FFd0twRCxzQkFBc0IsRUFJdkI7UUQxSkg7VUM5Qko7O1lGTUUsaUZBQWlGO1lBQ2pGLGlCRzNCKzNCO1lINEIvM0IscUJBTnFCO1lBT3JCLG9CQVBxQjtZQVFyQix5QkFBZ0I7WUFDaEIsVUFBVTtZQUNWLG9CQUEwRCxFRTRLckQ7TUF4TFA7UUEwTFEsZ0NBQVcsRUFDWjtJQTNMUDtNQThMTSxlQUFlLEVBSWhCO01EcEtEO1FDOUJKO1VBZ01RLGNBQWMsRUFFakI7RUFsTUw7SUFxTUksbUJBQW1CO0lBQ25CLGNGcE1tQixFRThRcEI7SUFoUkg7TUF3TU0sY0FBYztNQUNkLFlBQVksRUFjYjtNQXZOTDtRRk1FLGlGQUFpRjtRQUNqRixpQkczQjg4QjtRSDRCOThCLG1CQU5xQjtRQU9yQixvQkFQcUI7UUFRckIsd0JBQWdCO1FBQ2hCLFVBQVU7UUFDVixvQkFBMEQ7UUVnTXBELDBCQUF1QyxFQUt4QztRRG5MSDtVQzlCSjtZQThNVSxlQUFlO1lGeE12QixpRkFBaUY7WUFDakYsaUJHM0IrM0I7WUg0Qi8zQixxQkFOcUI7WUFPckIsb0JBUHFCO1lBUXJCLHlCQUFnQjtZQUNoQixVQUFVO1lBQ1Ysb0JBQTBELEVFcU1yRDtNRG5MSDtRQzlCSjtVQW1OUSxlQUFlO1VBQ2YsWUFBWTtVQUNaLGlCQUFpQixFQUVwQjtJQXZOTDtNQXlOTSxxQkZ2TmlCO01Fd05qQixZQUFZLEVBc0JiO01BaFBMO1FBOE5RLHFCQUFjO1FBQWQscUJBQWM7UUFBZCxjQUFjO1FBQ2QsMEJBQW9CO1lBQXBCLHVCQUFvQjtnQkFBcEIsb0JBQW9CLEVBZ0JyQjtRQS9PUDtVQW1PVSxhTDVMUSxFSzZMVDtRQXBPVDtVQXVPVSxhTDVLUSxFSzZLVDtRQXhPVDtVQTBPVSxZQUFZO1VBQ1osYUFBYTtVQUNiLGNFaFFraUI7VUZpUWxpQixxQ0hqUWlELEVHa1FsRDtJQTlPVDs7TUFxUFEsY0FBYyxFQUNmO0lBdFBQO01Bd1BRLGVBQWU7TUFDZixnQkFBZ0I7TUFDaEIsbUJBQW1CO01BQ25CLDhCQUFnQjtjQUFoQixzQkFBZ0I7TUFDaEIsYUFBYTtNQUNiLFlBQVk7TUFDWixPQUFPO01BQ1AsU0FBUztNQUNULGNFcFJvaUIsRUY0UnJpQjtNRDFPSDtRQzlCSjtVQW1RVSxhQUFhO1VBQ2IsWUFBWTtVQUNaLFVBQVU7VUFDViw4QkFBZ0I7a0JBQWhCLHNCQUFnQixFQUVuQjtJQXhRUDtNQTJRTSxjQUFjLEVBQ2Y7SUQ5T0Q7TUM5Qko7UUE4UU0sZUY1UWlCLEVFOFFwQjtFQWhSSDtJQWtSSSxjQUFjO0lBQ2QsbUJBQW1CO0lBQ25CLGFBQWE7SUFDYixnQkZuUm1CLEVFb1JwQjs7QUFHSDtFQUNFLHFCRnhScUIsRUV5UnRCOztBQUVEO0VBSVEsY0FBYyxFQUtmO0VEeFFIO0lDK1BKO01BT1UsZUFBZSxFQUVsQjs7QUFUUDtFQWFVLGNBQWMsRUFDZjtBRjVSVDs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUF5QkY7Ozs7O0VBS0U7QUFhRjs7RUFFRTtBQU9GOzs7Ozs7Ozs7Ozs7O0VBYUU7QUs1R0Y7RUFDRSxhQUFhO0VBQ2Isd0JMV3FCO0VLVnJCLHlCQUF5QjtFQUN6QixpRU5ieUQsRU1xRDFEO0VBNUNEO0lBUUksa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLFdBQVc7SUFDWCwrQkFBZ0I7WUFBaEIsdUJBQWdCLEVBTWpCO0lKc0JDO01JekNKO1FBZU0sT0FBTztRQUNQLFNBQVM7UUFDVCwrQkFBZ0I7Z0JBQWhCLHVCQUFnQixFQUVuQjtFQW5CSDtJQXNCSSxjQUFjLEVBQ2Y7RUF2Qkg7SUxpQkUsaUZBQWlGO0lBQ2pGLGlCRzNCaXZEO0lINEJqdkQsa0JBTnFCO0lBT3JCLG9CQVBxQjtJQVFyQixxQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLG9CQUEwRDtJS0l4RCxXQUFXO0lBQ1gsZURyQ3dpQixFQzhDemlCO0lBckNIO01BK0JNLGNBQWMsRUFDZjtJSlNEO01JekNKO1FMaUJFLGlGQUFpRjtRQUNqRixpQkczQjI3QztRSDRCMzdDLGdCQU5xQjtRQU9yQixrQkFQcUI7UUFRckIsMEJBQWdCO1FBQ2hCLFVBQVU7UUFDVixvQkFBMEQsRUtjekQ7RUpJQztJSXpDSjtNQ1VJLGlCQ3dJb0I7TUR4SXBCLFlFQTREO01GQTVELHVCRzREd0I7TUo3QnhCLFlBQVk7TUFDWixhQUFhLEVBRWhCOztBQUVEO0VBQ0UsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixZQUFZO0VBQ1osY0FBYztFQUNkLGFBQWEsRUFtQmQ7RUF4QkQ7SUFRSSxtQkFBbUI7SUFDbkIsVUFBVTtJQUNWLFFBQVE7SUFDUixTQUFTO0lBQ1Qsb0NBQXFCO1lBQXJCLDRCQUFxQjtJQUNyQixlQUFlLEVBTWhCO0lKeEJDO01JS0o7UUFnQk0sYUFBYTtRQUNiLFVBQVUsRUFFYjtFQW5CSDtJQXNCSSxPQUFPLEVBQ1I7O0FBR0g7RUFDRSxnQ0FBZ0MsRUFDakM7O0FBRUQ7RUFDRSxpQkFBaUIsRUFDbEI7O0FBSUM7RUFDRSxlQUFPO0VBQ1AsV0FBVyxFQUNaOztBQUhEO0VBQ0UsZUFBTztFQUNQLFdBQVcsRUFDWjs7QUFIRDtFQUNFLGVBQU87RUFDUCxXQUFXLEVBQ1o7O0FBSEQ7RUFDRSxlQUFPO0VBQ1AsV0FBVyxFQUNaOztBQUVEO0VBQ0UsMkNEakdtVjtFQ2tHblYsZURsR3dpQixFQ21HemlCOztBQUhEO0VBQ0UsMkNEakdtVjtFQ2tHblYsZURsR3dpQixFQ21HemlCOztBQVJEO0VBQ0UsZUFBTztFQUNQLFdBQVcsRUFDWjs7QUFIRDtFQUNFLGVBQU87RUFDUCxXQUFXLEVBQ1o7O0FBSEQ7RUFDRSxlQUFPO0VBQ1AsV0FBVyxFQUNaOztBQUhEO0VBQ0UsZUFBTztFQUNQLFdBQVcsRUFDWjs7QUFFRDtFQUNFLDJDRGpHbVc7RUNrR25XLGVEbEd3aUIsRUNtR3ppQjs7QUFIRDtFQUNFLDJDRGpHbVc7RUNrR25XLGVEbEd3aUIsRUNtR3ppQjs7QUFSRDtFQUNFLGVBQU87RUFDUCxXQUFXLEVBQ1o7O0FBSEQ7RUFDRSxlQUFPO0VBQ1AsV0FBVyxFQUNaOztBQUhEO0VBQ0UsZUFBTztFQUNQLFdBQVcsRUFDWjs7QUFIRDtFQUNFLGVBQU87RUFDUCxXQUFXLEVBQ1o7O0FBRUQ7RUFDRSwyQ0RqR2tYO0VDa0dsWCxlRGxHd2lCLEVDbUd6aUI7O0FBSEQ7RUFDRSwyQ0RqR2tYO0VDa0dsWCxlRGxHd2lCLEVDbUd6aUI7O0FBUkQ7RUFDRSxlQUFPO0VBQ1AsV0FBVyxFQUNaOztBQUhEO0VBQ0UsZUFBTztFQUNQLFdBQVcsRUFDWjs7QUFIRDtFQUNFLGVBQU87RUFDUCxXQUFXLEVBQ1o7O0FBSEQ7RUFDRSxlQUFPO0VBQ1AsV0FBVyxFQUNaOztBQUVEO0VBQ0UsMkNEakdnWTtFQ2tHaFksZURsR3dpQixFQ21HemlCOztBQUhEO0VBQ0UsMkNEakdnWTtFQ2tHaFksZURsR3dpQixFQ21HemlCOztBQVJEO0VBQ0UsZUFBTztFQUNQLFdBQVcsRUFDWjs7QUFIRDtFQUNFLGVBQU87RUFDUCxXQUFXLEVBQ1o7O0FBSEQ7RUFDRSxlQUFPO0VBQ1AsV0FBVyxFQUNaOztBQUhEO0VBQ0UsZUFBTztFQUNQLFdBQVcsRUFDWjs7QUFFRDtFQUNFLDJDRGpHZ1o7RUNrR2haLGVEbEd3aUIsRUNtR3ppQjs7QUFIRDtFQUNFLDJDRGpHZ1o7RUNrR2haLGVEbEd3aUIsRUNtR3ppQjs7QUFSRDtFQUNFLGVBQU87RUFDUCxXQUFXLEVBQ1o7O0FBSEQ7RUFDRSxlQUFPO0VBQ1AsV0FBVyxFQUNaOztBQUhEO0VBQ0UsZUFBTztFQUNQLFdBQVcsRUFDWjs7QUFIRDtFQUNFLGVBQU87RUFDUCxXQUFXLEVBQ1o7O0FBRUQ7RUFDRSwyQ0RqRzhaO0VDa0c5WixlRGxHd2lCLEVDbUd6aUI7O0FBSEQ7RUFDRSwyQ0RqRzhaO0VDa0c5WixlRGxHd2lCLEVDbUd6aUI7QUxoRUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBeUJGOzs7OztFQUtFO0FBYUY7O0VBRUU7QUFPRjs7Ozs7Ozs7Ozs7OztFQWFFO0FVaEhGO0VBQ0UsbUJWZ0JxQixFVWdGdEI7RUFqR0Q7SUFJSSxhQUFhO0lBQ2Isd0JWWW1CLEVVUHBCO0lBVkg7TUFRTSxxQlZTaUIsRVVSbEI7RUFUTDtJQWFJLFlBQVk7SUFDWixZQUFZLEVBOEViO0lBNUZIO01BaUJNLGlCQUFpQjtNQUNqQixpQkFBaUI7TUFDakIseUJBQXlCO01BQ3pCLHlCQUF5QjtNQUN6QixtQ0FBbUM7TUFDbkMsZ0JBQWdCLEVBTWpCO01UaUJEO1FTN0NKO1VBeUJRLG9CVlJlO1VVU2YsaUJBQWlCLEVBRXBCO0lBNUJMO01BK0JNLG1CQUFtQjtNQUNuQixzQkFBc0I7TUFDdEIsZUFBZTtNQUNmLGtCQUFxQixFQXlCdEI7TUEzREw7UUFxQ1EsV0FBVztRQUNYLG1CQUFtQjtRQUNuQixTQUFTO1FBQ1Qsa0JBQWtCLEVBYW5CO1FBckRQO1VBMkNVLGdCVjFCYTtVVTJCYixlVjNCYTtVVTRCYix5QkFBeUI7VUFDekIseUJBQXlCO1VBQ3pCLG1DQUFtQyxFQUtwQztVVFBMO1lTN0NKO2NBa0RhLGNBQWMsRUFFbEI7TVRQTDtRUzdDSjtVQXdEUyxlTjdEbWlCO1VNOERuaUIsVUFBVSxFQUVkO0lBM0RMO01BK0RNLGVBQWU7TUFDZixzQkFBc0IsRUFLdkI7TVR4QkQ7UVM3Q0o7VUFtRVMsZ0JBQWdCLEVBRXBCO0lBckVMO01Bd0VNLHNCVnZEaUIsRVU0RGxCO01UaENEO1FTN0NKO1VBMkVRLG9CQUFvQixFQUV2QjtJQTdFTDtNQWdGTSxnQlYvRGlCO01VZ0VqQixzQlZoRWlCLEVVc0VsQjtNVDFDRDtRUzdDSjtVQW9GUyxvQkFBb0I7VUFDcEIsb0JBQW9CLEVBRXhCO0lUMUNEO01TN0NKO1FBMEZPLFdBQVcsRUFFZjtFVC9DQztJUzdDSjtNQStGSyxvQlY5RWtCLEVVZ0Z0Qjs7QUFFRDtFQUVJLDBCQUF1QyxFQVF4QztFQVZIO0lBTVEseUJBQXNDO0lBQ3RDLGtDQUFpQjtZQUFqQiwwQkFBaUIsRUFDbEI7O0FBUlA7RUFhSSwwQkFBdUMsRUFDeEM7O0FBZEg7RUFpQkksa0JBQWtCO0VBQ2xCLG1CQUFtQixFQUNwQjtBYmpDQztFQUNFLGVDM0ZzYjtFRDRGdGIscUNFNUZxRCxFRnNHdEQ7RUFaRDtJQXJGQSxhQXVDYztJQW9EVixnQkFBZ0IsRUFDakI7RUFQSDtJQXJGQSxhQTJEYztJQW9DVixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQkMzRnNiO0VENEZ0YixxQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLGFBdUNjO0lBb0RWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLGFBMkRjO0lBb0NWLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGNDM0ZzYjtFRDRGdGIscUNFNUZxRCxFRnNHdEQ7RUFaRDtJQXJGQSxhQXVDYztJQW9EVixnQkFBZ0IsRUFDakI7RUFQSDtJQXJGQSxhQTJEYztJQW9DVixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxzQkMzRnNiO0VENEZ0YixxQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLGFBdUNjO0lBb0RWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLGFBMkRjO0lBb0NWLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGVDM0Z5YztFRDRGemMsbUNFNUZxRCxFRnNHdEQ7RUFaRDtJQXJGQSw2QkEwQ2M7SUFpRFYsZ0JBQWdCLEVBQ2pCO0VBUEg7SUFyRkEsNkJBOERjO0lBaUNWLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBCQzNGeWM7RUQ0RnpjLG1DRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsNkJBMENjO0lBaURWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLDZCQThEYztJQWlDVixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxjQzNGeWM7RUQ0RnpjLG1DRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsNkJBMENjO0lBaURWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLDZCQThEYztJQWlDVixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxzQkMzRnljO0VENEZ6YyxtQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLDZCQTBDYztJQWlEVixnQkFBZ0IsRUFDakI7RUFQSDtJQXJGQSw2QkE4RGM7SUFpQ1YsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsZUMzRjZkO0VENEY3ZCxxQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLGFBNkNjO0lBOENWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLGFBaUVjO0lBOEJWLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBCQzNGNmQ7RUQ0RjdkLHFDRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsYUE2Q2M7SUE4Q1YsZ0JBQWdCLEVBQ2pCO0VBUEg7SUFyRkEsYUFpRWM7SUE4QlYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsY0MzRjZkO0VENEY3ZCxxQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLGFBNkNjO0lBOENWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLGFBaUVjO0lBOEJWLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLHNCQzNGNmQ7RUQ0RjdkLHFDRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsYUE2Q2M7SUE4Q1YsZ0JBQWdCLEVBQ2pCO0VBUEg7SUFyRkEsYUFpRWM7SUE4QlYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsZUMzRnVmO0VENEZ2ZixxQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLGFBZ0RjO0lBMkNWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLGFBb0VjO0lBMkJWLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBCQzNGdWY7RUQ0RnZmLHFDRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsYUFnRGM7SUEyQ1YsZ0JBQWdCLEVBQ2pCO0VBUEg7SUFyRkEsYUFvRWM7SUEyQlYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsY0MzRnVmO0VENEZ2ZixxQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLGFBZ0RjO0lBMkNWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLGFBb0VjO0lBMkJWLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLHNCQzNGdWY7RUQ0RnZmLHFDRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsYUFnRGM7SUEyQ1YsZ0JBQWdCLEVBQ2pCO0VBUEg7SUFyRkEsYUFvRWM7SUEyQlYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsZUMzRnVoQjtFRDRGdmhCLHFDRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsYUFtRGM7SUF3Q1YsZ0JBQWdCLEVBQ2pCO0VBUEg7SUFyRkEsYUF1RWM7SUF3QlYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMEJDM0Z1aEI7RUQ0RnZoQixxQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLGFBbURjO0lBd0NWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLGFBdUVjO0lBd0JWLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGNDM0Z1aEI7RUQ0RnZoQixxQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLGFBbURjO0lBd0NWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLGFBdUVjO0lBd0JWLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLHNCQzNGdWhCO0VENEZ2aEIscUNFNUZxRCxFRnNHdEQ7RUFaRDtJQXJGQSxhQW1EYztJQXdDVixnQkFBZ0IsRUFDakI7RUFQSDtJQXJGQSxhQXVFYztJQXdCVixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxlQzNGc2lCO0VENEZ0aUIscUNFNUZxRCxFRnNHdEQ7RUFaRDtJQXJGQSxhQXNEYztJQXFDVixnQkFBZ0IsRUFDakI7RUFQSDtJQXJGQSxhQTBFYztJQXFCVixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQkMzRnNpQjtFRDRGdGlCLHFDRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsYUFzRGM7SUFxQ1YsZ0JBQWdCLEVBQ2pCO0VBUEg7SUFyRkEsYUEwRWM7SUFxQlYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsY0MzRnNpQjtFRDRGdGlCLHFDRTVGcUQsRUZzR3REO0VBWkQ7SUFyRkEsYUFzRGM7SUFxQ1YsZ0JBQWdCLEVBQ2pCO0VBUEg7SUFyRkEsYUEwRWM7SUFxQlYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usc0JDM0ZzaUI7RUQ0RnRpQixxQ0U1RnFELEVGc0d0RDtFQVpEO0lBckZBLGFBc0RjO0lBcUNWLGdCQUFnQixFQUNqQjtFQVBIO0lBckZBLGFBMEVjO0lBcUJWLGdCQUFnQixFQUNqQjs7QUFLUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUNFO0FBTUk7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySm1PO0lEc0puTyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUptTztJRDJKbk8sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKbU87SURzSm5PLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUptTztJRDJKbk8sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckptTztJRHNKbk8sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKbU87SUQySm5PLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySm1PO0lEc0puTyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKbU87SUQySm5PLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKbVA7SURzSm5QLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSm1QO0lEMkpuUCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckptUDtJRHNKblAsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSm1QO0lEMkpuUCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySm1QO0lEc0puUCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUptUDtJRDJKblAsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKbVA7SURzSm5QLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUptUDtJRDJKblAsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDckprUTtJRHNKbFEsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKa1E7SUQySmxRLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySmtRO0lEc0psUSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKa1E7SUQySmxRLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKa1E7SURzSmxRLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSmtRO0lEMkpsUSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckprUTtJRHNKbFEsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSmtRO0lEMkpsUSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySmdSO0lEc0poUixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUpnUjtJRDJKaFIsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKZ1I7SURzSmhSLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUpnUjtJRDJKaFIsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckpnUjtJRHNKaFIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKZ1I7SUQySmhSLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySmdSO0lEc0poUixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKZ1I7SUQySmhSLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKZ1M7SURzSmhTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSmdTO0lEMkpoUyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckpnUztJRHNKaFMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSmdTO0lEMkpoUyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySmdTO0lEc0poUyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUpnUztJRDJKaFMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKZ1M7SURzSmhTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUpnUztJRDJKaFMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDcko4UztJRHNKOVMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKOFM7SUQySjlTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySjhTO0lEc0o5UyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKOFM7SUQySjlTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKOFM7SURzSjlTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSjhTO0lEMko5UyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDcko4UztJRHNKOVMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSjhTO0lEMko5UyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySitIO0lEc0ovSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUorSDtJRDJKL0gsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKK0g7SURzSi9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUorSDtJRDJKL0gsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckorSDtJRHNKL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKK0g7SUQySi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySitIO0lEc0ovSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKK0g7SUQySi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKK0k7SURzSi9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSitJO0lEMkovSSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckorSTtJRHNKL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSitJO0lEMkovSSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySitJO0lEc0ovSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUorSTtJRDJKL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKK0k7SURzSi9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUorSTtJRDJKL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDcko4SjtJRHNKOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKOEo7SUQySjlKLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySjhKO0lEc0o5SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKOEo7SUQySjlKLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKOEo7SURzSjlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSjhKO0lEMko5SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDcko4SjtJRHNKOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSjhKO0lEMko5SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySjRLO0lEc0o1SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUo0SztJRDJKNUssZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKNEs7SURzSjVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUo0SztJRDJKNUssZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDcko0SztJRHNKNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKNEs7SUQySjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySjRLO0lEc0o1SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKNEs7SUQySjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKNEw7SURzSjVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSjRMO0lEMko1TCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDcko0TDtJRHNKNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSjRMO0lEMko1TCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySjRMO0lEc0o1TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUo0TDtJRDJKNUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKNEw7SURzSjVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUo0TDtJRDJKNUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDckowTTtJRHNKMU0sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKME07SUQySjFNLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySjBNO0lEc0oxTSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKME07SUQySjFNLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKME07SURzSjFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSjBNO0lEMkoxTSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckowTTtJRHNKMU0sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSjBNO0lEMkoxTSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySjRCO0lEc0o1QixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUo0QjtJRDJKNUIsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKNEI7SURzSjVCLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUo0QjtJRDJKNUIsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDcko0QjtJRHNKNUIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKNEI7SUQySjVCLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySjRCO0lEc0o1QixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKNEI7SUQySjVCLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKNEM7SURzSjVDLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSjRDO0lEMko1QyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDcko0QztJRHNKNUMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSjRDO0lEMko1QyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySjRDO0lEc0o1QyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUo0QztJRDJKNUMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKNEM7SURzSjVDLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUo0QztJRDJKNUMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDckoyRDtJRHNKM0QsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKMkQ7SUQySjNELGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySjJEO0lEc0ozRCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKMkQ7SUQySjNELGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKMkQ7SURzSjNELGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSjJEO0lEMkozRCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckoyRDtJRHNKM0QsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSjJEO0lEMkozRCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySnlFO0lEc0p6RSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUp5RTtJRDJKekUsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKeUU7SURzSnpFLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUp5RTtJRDJKekUsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckp5RTtJRHNKekUsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKeUU7SUQySnpFLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySnlFO0lEc0p6RSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKeUU7SUQySnpFLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKeUY7SURzSnpGLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSnlGO0lEMkp6RixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckp5RjtJRHNKekYsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSnlGO0lEMkp6RixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySnlGO0lEc0p6RixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUp5RjtJRDJKekYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKeUY7SURzSnpGLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUp5RjtJRDJKekYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDckp1RztJRHNKdkcsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKdUc7SUQySnZHLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySnVHO0lEc0p2RyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKdUc7SUQySnZHLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKdUc7SURzSnZHLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSnVHO0lEMkp2RyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckp1RztJRHNKdkcsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSnVHO0lEMkp2RyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySitIO0lEc0ovSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUorSDtJRDJKL0gsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKK0g7SURzSi9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUorSDtJRDJKL0gsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDckorSDtJRHNKL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKK0g7SUQySi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySitIO0lEc0ovSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKK0g7SUQySi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKK0k7SURzSi9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSitJO0lEMkovSSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDckorSTtJRHNKL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSitJO0lEMkovSSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySitJO0lEc0ovSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUorSTtJRDJKL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKK0k7SURzSi9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUorSTtJRDJKL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDcko4SjtJRHNKOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKOEo7SUQySjlKLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySjhKO0lEc0o5SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKOEo7SUQySjlKLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKOEo7SURzSjlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSjhKO0lEMko5SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDcko4SjtJRHNKOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSjhKO0lEMko5SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksZUNySjRLO0lEc0o1SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDMUo0SztJRDJKNUssZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLDBCQ3JKNEs7SURzSjVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDMUo0SztJRDJKNUssZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGNDcko0SztJRHNKNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQzFKNEs7SUQySjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxzQkNySjRLO0lEc0o1SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQzFKNEs7SUQySjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxlQ3JKNEw7SURzSjVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUMxSjRMO0lEMko1TCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksMEJDcko0TDtJRHNKNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkMxSjRMO0lEMko1TCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksY0NySjRMO0lEc0o1TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDMUo0TDtJRDJKNUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLHNCQ3JKNEw7SURzSjVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDMUo0TDtJRDJKNUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFbEptRCxFRjZKcEQ7RUFaRDtJQUlJLGVDckowTTtJRHNKMU0sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQzFKME07SUQySjFNLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSwwQkNySjBNO0lEc0oxTSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQzFKME07SUQySjFNLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRWxKbUQsRUY2SnBEO0VBWkQ7SUFJSSxjQ3JKME07SURzSjFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0MxSjBNO0lEMkoxTSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0VsSm1ELEVGNkpwRDtFQVpEO0lBSUksc0JDckowTTtJRHNKMU0sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkMxSjBNO0lEMkoxTSxnQkFBZ0IsRUFDakI7O0FBT1Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQThCRTtBQU1JO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM01tTztJRDRNbk8sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hObU87SURpTm5PLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTW1PO0lENE1uTyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hObU87SURpTm5PLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNbU87SUQ0TW5PLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTm1PO0lEaU5uTyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM01tTztJRDRNbk8sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTm1PO0lEaU5uTyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTW1QO0lENE1uUCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE5tUDtJRGlOblAsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNbVA7SUQ0TW5QLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE5tUDtJRGlOblAsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM01tUDtJRDRNblAsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hObVA7SURpTm5QLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTW1QO0lENE1uUCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hObVA7SURpTm5QLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNa1E7SUQ0TWxRLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTmtRO0lEaU5sUSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM01rUTtJRDRNbFEsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTmtRO0lEaU5sUSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTWtRO0lENE1sUSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE5rUTtJRGlObFEsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNa1E7SUQ0TWxRLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE5rUTtJRGlObFEsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM01nUjtJRDRNaFIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hOZ1I7SURpTmhSLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTWdSO0lENE1oUixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hOZ1I7SURpTmhSLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNZ1I7SUQ0TWhSLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTmdSO0lEaU5oUixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM01nUjtJRDRNaFIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTmdSO0lEaU5oUixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTWdTO0lENE1oUyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE5nUztJRGlOaFMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNZ1M7SUQ0TWhTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE5nUztJRGlOaFMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM01nUztJRDRNaFMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOZ1M7SURpTmhTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTWdTO0lENE1oUyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOZ1M7SURpTmhTLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNOFM7SUQ0TTlTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTjhTO0lEaU45UyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM004UztJRDRNOVMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTjhTO0lEaU45UyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTThTO0lENE05UyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE44UztJRGlOOVMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNOFM7SUQ0TTlTLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE44UztJRGlOOVMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM00rSDtJRDRNL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hOK0g7SURpTi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTStIO0lENE0vSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hOK0g7SURpTi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNK0g7SUQ0TS9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTitIO0lEaU4vSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM00rSDtJRDRNL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTitIO0lEaU4vSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTStJO0lENE0vSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE4rSTtJRGlOL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNK0k7SUQ0TS9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE4rSTtJRGlOL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM00rSTtJRDRNL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOK0k7SURpTi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTStJO0lENE0vSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOK0k7SURpTi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNOEo7SUQ0TTlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTjhKO0lEaU45SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM004SjtJRDRNOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTjhKO0lEaU45SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTThKO0lENE05SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE44SjtJRGlOOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNOEo7SUQ0TTlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE44SjtJRGlOOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM000SztJRDRNNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hONEs7SURpTjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTTRLO0lENE01SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hONEs7SURpTjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNNEs7SUQ0TTVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTjRLO0lEaU41SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM000SztJRDRNNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTjRLO0lEaU41SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTTRMO0lENE01TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE40TDtJRGlONUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNNEw7SUQ0TTVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE40TDtJRGlONUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM000TDtJRDRNNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hONEw7SURpTjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTTRMO0lENE01TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hONEw7SURpTjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNME07SUQ0TTFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTjBNO0lEaU4xTSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM00wTTtJRDRNMU0sZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTjBNO0lEaU4xTSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTTBNO0lENE0xTSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE4wTTtJRGlOMU0sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNME07SUQ0TTFNLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE4wTTtJRGlOMU0sZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM000QjtJRDRNNUIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hONEI7SURpTjVCLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTTRCO0lENE01QixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hONEI7SURpTjVCLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNNEI7SUQ0TTVCLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTjRCO0lEaU41QixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM000QjtJRDRNNUIsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTjRCO0lEaU41QixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTTRDO0lENE01QyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE40QztJRGlONUMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNNEM7SUQ0TTVDLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE40QztJRGlONUMsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM000QztJRDRNNUMsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hONEM7SURpTjVDLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTTRDO0lENE01QyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hONEM7SURpTjVDLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNMkQ7SUQ0TTNELGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTjJEO0lEaU4zRCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM00yRDtJRDRNM0QsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTjJEO0lEaU4zRCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTTJEO0lENE0zRCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE4yRDtJRGlOM0QsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNMkQ7SUQ0TTNELGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE4yRDtJRGlOM0QsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM015RTtJRDRNekUsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hOeUU7SURpTnpFLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTXlFO0lENE16RSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hOeUU7SURpTnpFLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNeUU7SUQ0TXpFLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTnlFO0lEaU56RSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM015RTtJRDRNekUsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTnlFO0lEaU56RSxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTXlGO0lENE16RixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE55RjtJRGlOekYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNeUY7SUQ0TXpGLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE55RjtJRGlOekYsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM015RjtJRDRNekYsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOeUY7SURpTnpGLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTXlGO0lENE16RixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOeUY7SURpTnpGLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNdUc7SUQ0TXZHLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTnVHO0lEaU52RyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM011RztJRDRNdkcsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTnVHO0lEaU52RyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTXVHO0lENE12RyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE51RztJRGlOdkcsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNdUc7SUQ0TXZHLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE51RztJRGlOdkcsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM00rSDtJRDRNL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hOK0g7SURpTi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTStIO0lENE0vSCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hOK0g7SURpTi9ILGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNK0g7SUQ0TS9ILGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTitIO0lEaU4vSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM00rSDtJRDRNL0gsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTitIO0lEaU4vSCxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTStJO0lENE0vSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE4rSTtJRGlOL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNK0k7SUQ0TS9JLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE4rSTtJRGlOL0ksZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM00rSTtJRDRNL0ksZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hOK0k7SURpTi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTStJO0lENE0vSSxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hOK0k7SURpTi9JLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNOEo7SUQ0TTlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksZUNoTjhKO0lEaU45SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSw4Q0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksMEJDM004SjtJRDRNOUosZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSwwQkNoTjhKO0lEaU45SixnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxrQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksY0MzTThKO0lENE05SixnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGNDaE44SjtJRGlOOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsMENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLHNCQzNNOEo7SUQ0TTlKLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksc0JDaE44SjtJRGlOOUosZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsbUNFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGVDM000SztJRDRNNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxlQ2hONEs7SURpTjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDhDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSwwQkMzTTRLO0lENE01SyxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLDBCQ2hONEs7SURpTjVLLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLGtDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxjQzNNNEs7SUQ0TTVLLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksY0NoTjRLO0lEaU41SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSwwQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksc0JDM000SztJRDRNNUssZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxzQkNoTjRLO0lEaU41SyxnQkFBZ0IsRUFDakI7O0FBWEg7RUFDRSxtQ0V4TW1ELEVGbU5wRDtFQVpEO0lBSUksZUMzTTRMO0lENE01TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLGVDaE40TDtJRGlONUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0UsOENFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLDBCQzNNNEw7SUQ0TTVMLGdCQUFnQixFQUNqQjtFQU5IO0lBU0ksMEJDaE40TDtJRGlONUwsZ0JBQWdCLEVBQ2pCOztBQVhIO0VBQ0Usa0NFeE1tRCxFRm1OcEQ7RUFaRDtJQUlJLGNDM000TDtJRDRNNUwsZ0JBQWdCLEVBQ2pCO0VBTkg7SUFTSSxjQ2hONEw7SURpTjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLDBDRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxzQkMzTTRMO0lENE01TCxnQkFBZ0IsRUFDakI7RUFOSDtJQVNJLHNCQ2hONEw7SURpTjVMLGdCQUFnQixFQUNqQjs7QUFYSDtFQUNFLG1DRXhNbUQsRUZtTnBEO0VBWkQ7SUFJSSxlQzNNME07SUQ0TTFNLGdCQUFnQixFQUNq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YVo7TUFsS0w7UUF3SlEsc0NBQWdCLEVBU2pCO1FBaktQO1VBMkpVLGNBQWMsRUFLZjtVVnpITDtZVXZDSjtjQThKWSxlQUFlLEVBRWxCO0lWekhMO01VdkNKO1FBcUtNLHNDQUFnQixFQUVuQjtFQXZLSDtJQTBLSSxjQUFjLEVBQ2Y7QVhuSkg7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBeUJGOzs7OztFQUtFO0FBYUY7O0VBRUU7QUFPRjs7Ozs7Ozs7Ozs7OztFQWFFO0FZL0dGO0VBQ0UsbUJBQW1CO0VBQ25CLGNBQWM7RUFDZCxrQlphcUI7RVlackIsdUJaWXFCLEVZZXRCO0VBL0JEO0lBT0ksK0NBQStDO0lBQy9DLHFCQUFxQjtJQUNyQix3Q0FBd0MsRUFDekM7RUFWSDtJQWFJLG1CQUFtQjtJQUNuQixRQUFRO0lBQ1IsU0FBUztJQUNULFVBQVU7SUFDVixhQUFhLEVBT2Q7SVhvQkM7TVc1Q0o7UUFvQk0sbUJBQW1CO1FBQ25CLGlCWkxpQjtRWU1qQixlWk5pQixFWVFwQjtFWG9CQztJVzVDSjtNQTJCSSxjWlhtQjtNWVluQixXQUFXO01BQ1gsc0JaYm1CLEVZZXRCO0FDckNEO0VBQ0UsY0FBYyxFQUNmIiwiZmlsZSI6ImNzcy91bml2ZXJzYWwuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnY29yZS92YXJpYWJsZXMvbW90aW9uLmpzb24nO1xuQGltcG9ydCAnY29yZS92YXJpYWJsZXMvY29sb3JzLmpzb24nO1xuXG5AbWl4aW4gcHJpbnQoJGRlY2xhcmF0aW9ucykge1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkZGVjbGFyYXRpb25zIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG5cbiR0cmFuc2l0aW9uVGltaW5nOiBtYXAtZ2V0KCR0cmFuc2l0aW9ucywgaG92ZXItdGltaW5nKTtcbiR0cmFuc2l0aW9uRWFzaW5nOiBtYXAtZ2V0KCR0cmFuc2l0aW9ucywgaG92ZXItZWFzaW5nKTtcblxuJGNvbG9yQ2F0ZWdvcmllczogKFxuICBleHRyYS1saWdodCxcbiAgbGlnaHQsXG4gIGRhcmssXG4gIGV4dHJhLWRhcmtcbik7XG5cbiRwcm9wZXJ0aWVzOiAoXG4gIGNvbG9yOiBjb2xvcixcbiAgYmctY29sb3I6IGJhY2tncm91bmQtY29sb3IsXG4gIGZpbGwtY29sb3I6IGZpbGwsXG4gIGJvcmRlci1jb2xvcjogYm9yZGVyLWNvbG9yXG4pO1xuXG4kaW50ZXJhY3Rpb246IChcbiAgaG92ZXI6IChcbiAgICBleHRyYS1saWdodDogbGlnaHQsXG4gICAgbGlnaHQ6IGRhcmssXG4gICAgZGFyazogZXh0cmEtZGFyayxcbiAgICBleHRyYS1kYXJrOiBkYXJrXG4gICksXG4gIGFjdGl2ZTogKFxuICAgIGV4dHJhLWxpZ2h0OiBsaWdodCxcbiAgICBsaWdodDogZGFyayxcbiAgICBkYXJrOiBleHRyYS1kYXJrLFxuICAgIGV4dHJhLWRhcms6IGRhcmtcbiAgKVxuKTtcblxuJG5ldXRyYWxDb2xvckludGVyYWN0aW9uOiAoXG4gIGhvdmVyOiAoXG4gICAgYmxhY2s6IChcbiAgICAgIG9wYWNpdHk6IDAuNlxuICAgICksXG4gICAgZGFyay1ncmF5OiAoXG4gICAgICBjb2xvcjogY29sb3IobmV1dHJhbCwgYmxhY2spXG4gICAgKSxcbiAgICBsaWdodC1ncmF5OiAoXG4gICAgICBvcGFjaXR5OiAwLjZcbiAgICApLFxuICAgIGV4dHJhLWxpZ2h0LWdyYXk6IChcbiAgICAgIG9wYWNpdHk6IDAuNlxuICAgICksXG4gICAgZXh0cmEtZXh0cmEtbGlnaHQtZ3JheTogKFxuICAgICAgb3BhY2l0eTogMC42XG4gICAgKSxcbiAgICB3aGl0ZTogKFxuICAgICAgb3BhY2l0eTogMC42XG4gICAgKVxuICApLFxuICBhY3RpdmU6IChcbiAgICBibGFjazogKFxuICAgICAgb3BhY2l0eTogMC42XG4gICAgKSxcbiAgICBkYXJrLWdyYXk6IChcbiAgICAgIGNvbG9yOiBjb2xvcihuZXV0cmFsLCBibGFjaylcbiAgICApLFxuICAgIGxpZ2h0LWdyYXk6IChcbiAgICAgIG9wYWNpdHk6IDAuNlxuICAgICksXG4gICAgZXh0cmEtbGlnaHQtZ3JheTogKFxuICAgICAgb3BhY2l0eTogMC42XG4gICAgKSxcbiAgICBleHRyYS1leHRyYS1saWdodC1ncmF5OiAoXG4gICAgICBvcGFjaXR5OiAwLjZcbiAgICApLFxuICAgIHdoaXRlOiAoXG4gICAgICBvcGFjaXR5OiAwLjZcbiAgICApXG4gIClcbik7XG5cbkBlYWNoICRjb2xvcktleSwgJGNvbG9yIGluIG1hcC1nZXQoJGNvbG9ycywgbmV1dHJhbCkge1xuICBAZWFjaCAkcHJvcEtleSwgJHByb3AgaW4gJHByb3BlcnRpZXMge1xuICAgICRob3ZlckludGVyYWN0aXZlUHJvcHM6IG1hcC1nZXQobWFwLWdldCgkbmV1dHJhbENvbG9ySW50ZXJhY3Rpb24sIGhvdmVyKSwgJGNvbG9yS2V5KTtcbiAgICAkaG92ZXJJbnRlcmFjdGl2ZVByb3BOYW1lOiBudGgobWFwLWtleXMoJGhvdmVySW50ZXJhY3RpdmVQcm9wcyksIDEpO1xuICAgICRhY3RpdmVJbnRlcmFjdGl2ZVByb3BzOiBtYXAtZ2V0KG1hcC1nZXQoJG5ldXRyYWxDb2xvckludGVyYWN0aW9uLCBhY3RpdmUpLCAkY29sb3JLZXkpO1xuXG4gICAgLiN7JHByb3BLZXl9LS1uZXV0cmFsLSN7JGNvbG9yS2V5fS0taGFzLWhvdmVyIHtcbiAgICAgICN7JHByb3B9OiAkY29sb3I7XG4gICAgICB0cmFuc2l0aW9uOiAkaG92ZXJJbnRlcmFjdGl2ZVByb3BOYW1lICR0cmFuc2l0aW9uVGltaW5nICR0cmFuc2l0aW9uRWFzaW5nO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGluY2x1ZGUgcHJpbnQoJGhvdmVySW50ZXJhY3RpdmVQcm9wcyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgQGluY2x1ZGUgcHJpbnQoJGFjdGl2ZUludGVyYWN0aXZlUHJvcHMpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qXG4gIENvbG9yIEhvdmVyIFV0aWxpdHkgQ2xhc3NlczpcbiAgQ3JlYXRlcyBhIGNsYXNzIGZvciBlYWNoIGNhdGVnb3J5IGFuZCBjb2xvciBjb21iaW5hdGlvbiBiYXNlZCBvbiB0aGUgaW50ZXJhY3Rpb25cbiAgbG9naWMgb2YgdGhlIHN5c3RlbSAoaG92ZXIgZ29lcyB0byBvbmUgc2hhZGUgZGFya2VyLCBhY3RpdmUgYW5kIGhvdmVyIGFyZSB0aGUgc2FtZSkuXG5cbiAgLmJnLWNvbG9yLS1kYXJrLWJsdWUtLWhvdmVyIHtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR0cmFuc2l0aW9uVGltaW5nICR0cmFuc2l0aW9uRWFzaW5nO1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNUZEMTtcbiAgICB9XG4gICAgJjphY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNUZEMTtcbiAgICB9XG4gIH1cblxuXG4gIFByb3BlcnRpZXM6IGNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yIChiZy1jb2xvciksIGZpbGwgKGZpbGwtY29sb3IpLCBib3JkZXItY29sb3JcbiAgQ2F0ZWdvcmllczogZXh0cmEtZGFyaywgZGFyaywgbGlnaHQsIGV4dHJhLWxpZ2h0LCBuZXV0cmFsXG4gIENvbG9yczogb3JhbmdlLCB5ZWxsb3csIGdyZWVuLCBibHVlLCBwdXJwbGUsIHBpbmtcblxuICAue3Byb3BlcnR5fS0te2NhdGVnb3J5fS17Y29sb3J9LS1ob3ZlciB7XG4gICAgdHJhbnNpdGlvbjoge3Byb3BlcnR5fSAkdHJhbnNpdGlvblRpbWluZyAkdHJhbnNpdGlvbkVhc2luZztcbiAgICAmOmhvdmVyIHtcbiAgICAgIHtwcm9wZXJ0eX06IHtob3ZlckNvbG9yfTtcbiAgICB9XG4gICAgJjphY3RpdmUge1xuICAgICAge3Byb3BlcnR5fToge2FjdGl2ZUNvbG9yfTtcbiAgICB9XG4gIH1cblxuICBOb3RlOiB0aGUgYmFja2dyb3VuZC1jb2xvciBwcm9wZXJ0eSB1c2VzIGJnLWNvbG9yIGluIHRoZSBjbGFzc25hbWUuXG4gIEFsbCBvdGhlcnMgdXNlIHRoZSBzYW1lIGNsYXNzIG5hbWUgYXMgdGhlIENTUyBwcm9wZXJ0eSB0aGV5IHNldC5cblxuKi9cblxuQGVhY2ggJGNhdGVnb3J5S2V5IGluICRjb2xvckNhdGVnb3JpZXMge1xuICAkY2F0ZWdvcnk6IG1hcC1nZXQoJGNvbG9ycywgJGNhdGVnb3J5S2V5KTtcbiAgQGVhY2ggJGNvbG9yS2V5LCAkY29sb3IgaW4gJGNhdGVnb3J5IHtcbiAgICBAZWFjaCAkcHJvcEtleSwgJHByb3AgaW4gJHByb3BlcnRpZXMge1xuICAgICAgLiN7JHByb3BLZXl9LS0jeyRjYXRlZ29yeUtleX0tI3skY29sb3JLZXl9LS1ob3ZlciB7XG4gICAgICAgIHRyYW5zaXRpb246ICN7JHByb3B9ICR0cmFuc2l0aW9uVGltaW5nICR0cmFuc2l0aW9uRWFzaW5nO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAkaG92ZXJDYXRlZ29yeTogbWFwLWdldChtYXAtZ2V0KCRpbnRlcmFjdGlvbiwgaG92ZXIpLCAkY2F0ZWdvcnlLZXkpO1xuICAgICAgICAgICN7JHByb3B9OiBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJGhvdmVyQ2F0ZWdvcnkpLCAkY29sb3JLZXkpO1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgJGFjdGl2ZUNhdGVnb3J5OiBtYXAtZ2V0KG1hcC1nZXQoJGludGVyYWN0aW9uLCBhY3RpdmUpLCAkY2F0ZWdvcnlLZXkpO1xuICAgICAgICAgICN7JHByb3B9OiBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJGFjdGl2ZUNhdGVnb3J5KSwgJGNvbG9yS2V5KTtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cbiAgfVxufVxuXG4vKlxuICBUaGVtZSBDb2xvciBVdGlsaXR5IENsYXNzZXM6XG4gIENyZWF0ZXMgYSBjbGFzcyBmb3IgZWFjaCBjYXRlZ29yeSBhbmQgY29sb3IgY29tYmluYXRpb24uXG5cbiAgLnRoZW1lLS1ibHVlIC50aGVtZS1iZy1jb2xvci0tZGFyay0taG92ZXIge1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNUZEMTtcbiAgICB9XG4gICAgJjphY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNUZEMTtcbiAgICB9XG4gIH1cbn1cblxuICBQcm9wZXJ0aWVzOiBjb2xvciwgYmFja2dyb3VuZC1jb2xvciAoYmctY29sb3IpLCAoZmlsbCkgZmlsbC1jb2xvciwgYm9yZGVyLWNvbG9yXG4gIENhdGVnb3JpZXM6IGV4dHJhLWRhcmssIGRhcmssIGxpZ2h0LCBleHRyYS1saWdodCwgbmV1dHJhbFxuICBDb2xvcnM6IG9yYW5nZSwgeWVsbG93LCBncmVlbiwgYmx1ZSwgcHVycGxlLCBwaW5rXG5cbiAgLnRoZW1lLS17Y29sb3J9IC50aGVtZS17cHJvcGVydHl9LS17Y2F0ZWdvcnl9LS1ob3ZlciB7XG4gICAgJjpob3ZlciB7XG4gICAgICB7cHJvcGVydHl9OiB7aG92ZXJDb2xvcn1cbiAgICB9XG4gICAgJjphY3RpdmUge1xuICAgICAge3Byb3BlcnR5fToge2FjdGl2ZUNvbG9yfVxuICAgIH1cbiAgfVxuXG4gIE5vdGU6IHRoZSBiYWNrZ3JvdW5kLWNvbG9yIHByb3BlcnR5IHVzZXMgYmctY29sb3IgaW4gdGhlIGNsYXNzbmFtZS5cbiAgQWxsIG90aGVycyB1c2UgdGhlIHNhbWUgY2xhc3MgbmFtZSBhcyB0aGUgQ1NTIHByb3BlcnR5IHRoZXkgc2V0LlxuXG4qL1xuXG5AZWFjaCAkY2F0ZWdvcnlLZXkgaW4gJGNvbG9yQ2F0ZWdvcmllcyB7XG4gICRjYXRlZ29yeTogbWFwLWdldCgkY29sb3JzLCAkY2F0ZWdvcnlLZXkpO1xuICBAZWFjaCAkY29sb3JLZXksICRjb2xvciBpbiAkY2F0ZWdvcnkge1xuICAgIEBlYWNoICRwcm9wS2V5LCAkcHJvcCBpbiAkcHJvcGVydGllcyB7XG4gICAgICAudGhlbWUtLSN7JGNvbG9yS2V5fSAudGhlbWUtI3skcHJvcEtleX0tLSN7JGNhdGVnb3J5S2V5fS0taG92ZXIge1xuICAgICAgICB0cmFuc2l0aW9uOiAjeyRwcm9wfSAkdHJhbnNpdGlvblRpbWluZyAkdHJhbnNpdGlvbkVhc2luZztcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgJGhvdmVyQ2F0ZWdvcnk6IG1hcC1nZXQobWFwLWdldCgkaW50ZXJhY3Rpb24sIGhvdmVyKSwgJGNhdGVnb3J5S2V5KTtcbiAgICAgICAgICAjeyRwcm9wfTogbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICRob3ZlckNhdGVnb3J5KSwgJGNvbG9yS2V5KTtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICRhY3RpdmVDYXRlZ29yeTogbWFwLWdldChtYXAtZ2V0KCRpbnRlcmFjdGlvbiwgYWN0aXZlKSwgJGNhdGVnb3J5S2V5KTtcbiAgICAgICAgICAjeyRwcm9wfTogbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICRhY3RpdmVDYXRlZ29yeSksICRjb2xvcktleSk7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9jb3JlL3N0eWxlL3V0aWxpdHkvX2hvdmVyLnNjc3NcbiAqKi8iLCIkY29sb3JzOiAoZXh0cmEtZGFyazogKG9yYW5nZTogI0Q4MkUxOCx5ZWxsb3c6ICNGOThFMDAsZ3JlZW46ICMwMDg5NTEsYmx1ZTogIzAwNUZEMSxwdXJwbGU6ICM0RjAyOTkscGluazogI0EwMTc0NCksZGFyazogKG9yYW5nZTogI0Y0NUQyMix5ZWxsb3c6ICNGRkFEMUYsZ3JlZW46ICMxRkI2NTAsYmx1ZTogIzFEQTFGMixwdXJwbGU6ICM3OTRCQzQscGluazogI0UwMjQ1RSksbGlnaHQ6IChvcmFuZ2U6ICNGRjhENTcseWVsbG93OiAjRkZEMDNGLGdyZWVuOiAjNjhFMDkwLGJsdWU6ICM3MUM5RjgscHVycGxlOiAjQTM3Q0VELHBpbms6ICNGNjgwOUEpLGV4dHJhLWxpZ2h0OiAob3JhbmdlOiAjRkZCRTc4LHllbGxvdzogI0ZGRTc2RSxncmVlbjogI0E1RjJBQSxibHVlOiAjOTdFM0ZGLHB1cnBsZTogI0M3QjRGQSxwaW5rOiAjRkZCOEMyKSxuZXV0cmFsOiAoYmxhY2s6ICMxNDE3MUEsZGFyay1ncmF5OiAjNjU3Nzg2LGxpZ2h0LWdyYXk6ICNBQUI4QzIsZXh0cmEtbGlnaHQtZ3JheTogI0NDRDZERCxleHRyYS1leHRyYS1saWdodC1ncmF5OiAjRjVGOEZBLHdoaXRlOiAjRkZGRkZGKSk7XG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay9jb3JlL3ZhcmlhYmxlcy9jb2xvcnMuanNvblxuICoqLyIsIiR0cmFuc2l0aW9uczogKGhvdmVyLXRpbWluZzogMC4zcyxob3Zlci1lYXNpbmc6IGVhc2UtaW4tb3V0LGNvbG9yLWNoYW5nZS10aW1pbmc6IDFzLGNvbG9yLWNoYW5nZS1lYXNpbmc6IGVhc2UtaW4tb3V0LGxvYWRlci1iaXJkLXRpbWluZzogMC4zcyxsb2FkZXItYmlyZC1lYXNpbmc6IGVhc2UtaW4pO1xuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svY29yZS92YXJpYWJsZXMvbW90aW9uLmpzb25cbiAqKi8iLCJAaW1wb3J0ICcuLi92YXJpYWJsZXMvYnJlYWtwb2ludHMuanNvbic7XG5AaW1wb3J0ICcuLi92YXJpYWJsZXMvdHlwb2dyYXBoeS5qc29uJztcbkBpbXBvcnQgJy4uL3ZhcmlhYmxlcy9jb2xvcnMuanNvbic7XG5cbkBpbXBvcnQgJy4vZ3JpZCc7XG5cbi8vJGJhc2VsaW5lVW5pdDogbWFwLWdldChtYXAtZ2V0KCRncmlkLCBkZXNrdG9wKSwgYmFzZWxpbmUpO1xuJGJhc2VsaW5lVW5pdDogMC43NXJlbTsgLy8gMTJweFxuXG5AbWl4aW4gcmVzcG9uZC10bygkc2l6ZSkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsICRzaXplKSkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIHZlcnRpY2FsLWFsaWduIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG5AZnVuY3Rpb24gYmFzZWxpbmUoJG11bHRpcGxpZXI6IDEpIHtcbiAgQHJldHVybiAkYmFzZWxpbmVVbml0ICogJG11bHRpcGxpZXI7XG59XG5cbkBtaXhpbiB0eXBlU3R5bGVzKCR0eXBlZmFjZSkge1xuICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZSBMVFwiLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBtYXAtZ2V0KCR0eXBlZmFjZSwgd2VpZ2h0KTtcbiAgZm9udC1zaXplOiBiYXNlbGluZShtYXAtZ2V0KCR0eXBlZmFjZSwgc2l6ZSkpO1xuICBsaW5lLWhlaWdodDogYmFzZWxpbmUobWFwLWdldCgkdHlwZWZhY2UsIGxpbmUtaGVpZ2h0KSk7XG4gIGxldHRlci1zcGFjaW5nOiAje21hcC1nZXQoJHR5cGVmYWNlLCB0cmFja2luZykgLyAxMDAwfXJlbTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDAgYmFzZWxpbmUobWFwLWdldCgkdHlwZWZhY2UsIG1hcmdpbi1ib3R0b20pKSAwO1xufVxuXG4vKlxuXG5mb250IG1peGluXG4ka2V5OiB0eXBlIHN0eWxlIGtleSAoZXguIGJvbGQtMjQgb3Igcm9tYW4tMjQpLiBTZWUgdHlwb2dyYXBoeS5qc29uIGZvciBvcHRpb25zLlxuJGJyZWFrcG9pbnQ6IChvcHRpb25hbCkgYnJlYWtwb2ludCBrZXkgKGV4LiBmdWxsIG9yIHRhYmxldCkuIFNlZSBicmVha3BvaW50cy5qc29uIGZvciBvcHRpb25zLlxuXG5AaW5jbHVkZSBmb250KGJvbGQtMjQpO1xuXG5XaGVuIHVzZWQgd2l0aG91dCBhIGJyZWFrcG9pbnQgc3BlY2lmaWVkIHRoaXMgbWl4aW4gd2lsbCBwcm9kdWNlIGZvbnQgcHJvcGVydGllc1xud3JhcHBlZCBpbiBtZWRpYSBxdWVyaWVzLiBJdCdzIGEgc2ltcGxlIHdheSB0byBhcHBseSBmdWxseSByZXNwb25zaXZlIHR5cGUgc3R5bGVzXG50byBhIGNsYXNzIG9yIGVsZW1lbnQuXG5cbkBpbmNsdWRlIGZvbnQoYm9sZC0yNCwgZnVsbCk7XG5cbklmIGEgYnJlYWtwb2ludCBpcyBzcGVjaWZpZWQgdGhlcmUgd2lsbCBiZSBvbmx5IGEgc2luZ2xlIHNldCBvZiBmb250IHByb3BlcnRpZXNcbnRoYXQgYXJlIE5PVCB3cmFwcGVkIGluIGFueSBtZWRpYSBxdWVyaWVzLlxuXG4qL1xuXG5AbWl4aW4gZm9udCgka2V5LCAkYnJlYWtwb2ludDogbnVsbCkge1xuICBAaWYgJGJyZWFrcG9pbnQge1xuICAgIEBpZiBtYXAtaGFzLWtleShtYXAtZ2V0KCR0eXBvZ3JhcGh5LCByZXNwb25zaXZlKSwgJGJyZWFrcG9pbnQpIHtcbiAgICAgICRyZXNwb25zaXZlVHlwZTogbWFwLWdldChtYXAtZ2V0KG1hcC1nZXQoJHR5cG9ncmFwaHksIHJlc3BvbnNpdmUpLCAkYnJlYWtwb2ludCksICRrZXkpO1xuICAgICAgQGluY2x1ZGUgdHlwZVN0eWxlcygkcmVzcG9uc2l2ZVR5cGUpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJHR5cGVmYWNlOiBtYXAtZ2V0KG1hcC1nZXQoJHR5cG9ncmFwaHksIGRlZmF1bHQpLCAka2V5KTtcbiAgICBAaW5jbHVkZSB0eXBlU3R5bGVzKCR0eXBlZmFjZSk7XG4gICAgQGVhY2ggJGJyZWFrcG9pbnRLZXksICRicmVha3BvaW50VmFsIGluICRicmVha3BvaW50cyB7XG4gICAgICBAaWYgbWFwLWhhcy1rZXkobWFwLWdldCgkdHlwb2dyYXBoeSwgcmVzcG9uc2l2ZSksICRicmVha3BvaW50S2V5KSB7XG5cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRicmVha3BvaW50VmFsKSB7XG4gICAgICAgICAgJHJlc3BvbnNpdmVUeXBlOiBtYXAtZ2V0KG1hcC1nZXQobWFwLWdldCgkdHlwb2dyYXBoeSwgcmVzcG9uc2l2ZSksICRicmVha3BvaW50S2V5KSwgJGtleSk7XG4gICAgICAgICAgQGluY2x1ZGUgdHlwZVN0eWxlcygkcmVzcG9uc2l2ZVR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLypcblxuICBjb2xvcih5ZWxsb3cpIHNpbmdsZSBhcmd1bWVudCBkZWZhdWx0cyB0byBkYXJrIGNvbG9yc1xuICBjb2xvcihsaWdodCwgeWVsbG93KSByZXR1cm5zIGxpZ2h0IHllbGxvd1xuXG4qL1xuQGZ1bmN0aW9uIGNvbG9yKCRjb2xvci1jYXRlZ29yeSwgJGNvbG9yLW5hbWU6bnVsbCkge1xuICAvLyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG51bGwgdGhlcmUgc2hvdWxkIGJlIGEgY29sb3IgYXMgdGhlIGZpcnN0IGFyZ3VtZW50XG4gIEBpZiAoJGNvbG9yLW5hbWUgIT0gbnVsbCkge1xuICAgIC8vIG1hcCBpbmNlcHRpb25cbiAgICBAcmV0dXJuIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAkY29sb3ItY2F0ZWdvcnkpLCAkY29sb3ItbmFtZSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsIGRhcmspLCAkY29sb3ItbmFtZSk7XG4gIH1cblxuICBAd2FybiBcIkNvbG9yICcjeyRjb2xvci1jYXRlZ29yeX0nICcjeyRjb2xvci1uYW1lfScgbm90IGZvdW5kIGluICRjb2xvcnNcIjtcbn1cblxuLyogcm91bmRlZCBjb3JuZXJzXG4gIHVzYWdlOiBib3JkZXItcmFkaXVzKCBiYXNlbGluZSggbiApIClcbiovXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcmFkaXVzKSB7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsgIC8qIHN0b3BzIGJnIGNvbG9yIGZyb20gbGVha2luZyBvdXRzaWRlIHRoZSBib3JkZXI6ICovXG59XG5cbi8qXG5cbmh0dHBzOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvc2Fzcy9tYWludGFpbi1hc3BlY3QtcmF0aW8tbWl4aW4vXG5cblRoZSBtaXhpbiBhc3N1bWVzIHlvdSdsbCBiZSBuZXN0aW5nIGFuIGVsZW1lbnQgd2l0aCB0aGUgY2xhc3Mgb2YgY29udGVudCBpbnNpZGUgeW91ciBpbml0aWFsIGJsb2NrXG5cbjxkaXYgY2xhc3M9XCJzaXh0ZWVuLW5pbmVcIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICBpbnNlcnQgY29udGVudCBoZXJlXG4gICAgdGhpcyB3aWxsIG1haW50YWluIGEgMTY6OSBhc3BlY3QgcmF0aW9cbiAgPC9kaXY+XG48L2Rpdj5cblxuKi9cblxuQG1peGluIGFzcGVjdC1yYXRpbygkd2lkdGgsICRoZWlnaHQpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAmOmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29udGVudDogXCJcIjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nLXRvcDogKCRoZWlnaHQgLyAkd2lkdGgpICogMTAwJTtcbiAgfVxuICA+IC5jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svY29yZS9zdHlsZS9fbWl4aW4uc2Nzc1xuICoqLyIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9+L3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3NcbiAqKi8iLCJAaW1wb3J0ICdjb3JlL3ZhcmlhYmxlcy9icmVha3BvaW50cy5qc29uJztcbkBpbXBvcnQgJ2NvcmUvdmFyaWFibGVzL21vdGlvbi5qc29uJztcbkBpbXBvcnQgJ2NvcmUvc3R5bGUvdXRpbGl0eS9faG92ZXInO1xuQGltcG9ydCAnY29yZS9zdHlsZS9ncmlkJztcbkBpbXBvcnQgJ2NvcmUvc3R5bGUvbWl4aW4nO1xuXG4kdHJhbnNpdGlvblRpbWluZzogbWFwLWdldCgkdHJhbnNpdGlvbnMsIGhvdmVyLXRpbWluZyk7XG4kdHJhbnNpdGlvbkVhc2luZzogbWFwLWdldCgkdHJhbnNpdGlvbnMsIGhvdmVyLWVhc2luZyk7XG5cbi50b3BpYy1wYWdlIC5uYXYge1xuICAuYWN0aXZlLWxpbmsge1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIC8vIE9uIGRlc2t0b3AsIHdlIGRvbid0IHdhbnQgdGhlIGFjdGl2ZSBsaW5rIHRvIGJlIGNsaWNrYWJsZVxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAvLyBJRTExIG5lZWRzIGxpbmtzIHRvIGJlIGJsb2NrL2lubGluZS1ibG9jayB0byB1c2UgcG9pbnRlciBldmVudHNcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gIH1cbn1cblxuLm5hdiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiBhdXRvO1xuICBtYXgtd2lkdGg6IDE2MDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYmFzZWxpbmUoNCk7XG4gIHotaW5kZXg6IDExO1xuICBkaXNwbGF5OiBmbGV4O1xuICAmLnN0aWNreSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICB9XG4gICYtLXdyYXBwZXIge1xuICAgIHBhZGRpbmc6IGJhc2VsaW5lKDEpIGJhc2VsaW5lKDIpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIHBhZGRpbmc6IGJhc2VsaW5lKDEpIGJhc2VsaW5lKDUvMyk7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuICAmLnRyYW5zcGFyZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuICAmLmFjdGl2ZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICBoZWlnaHQ6IGJhc2VsaW5lKDQpO1xuICAgIH1cbiAgICAmLnRyYW5zcGFyZW50IHtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIC5uYXYtLW1lbnUge1xuICAgICAgdG9wOiBiYXNlbGluZSg1KTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDE0cmVtKTtcbiAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICAgIC5yZWdpb24tc2VsZWN0b3ItbW9iaWxlIHtcbiAgICAgIC5yZWdpb24tc2VsZWN0b3Ige1xuICAgICAgICAuY3VycmVudC1yZWdpb24ge1xuICAgICAgICAgIEBpbmNsdWRlIHR5cGVTdHlsZXMobWFwLWdldChtYXAtZ2V0KCR0eXBvZ3JhcGh5LCBkZWZhdWx0KSwgYm9sZC0xNCkpO1xuICAgICAgICAgIGNvbG9yOiBjb2xvcihuZXV0cmFsLCB3aGl0ZSkgIWltcG9ydGFudDtcbiAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0eXBlU3R5bGVzKG1hcC1nZXQobWFwLWdldCgkdHlwb2dyYXBoeSwgZGVmYXVsdCksIHJvbWFuLTE2KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgLm5hdi0taGVhZGVyLWxlZnQge1xuICAgICAgLm5hdi0taGVhZGVyLXRpdGxlIHtcbiAgICAgICAgLm5hdi1pY29uIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gICYtLWhlYWRlci1sZWZ0IHtcbiAgICAubmF2LS1oZWFkZXItdGl0bGUge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAubG9nby10aXRsZSB7XG4gICAgICAgICRjb2xvclByb3BlcnR5OiB3aGl0ZTtcblxuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICAubG9nbyB7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogYmFzZWxpbmUoMSk7XG5cbiAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGJhc2VsaW5lKDQvMyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPiBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IGJhc2VsaW5lKDIpO1xuICAgICAgICAgICAgaGVpZ2h0OiBiYXNlbGluZSgyKTtcbiAgICAgICAgICAgIGZpbGw6IGNvbG9yKG5ldXRyYWwsICRjb2xvclByb3BlcnR5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXYtaWNvbiB7XG4gICAgICAgICRjb2xvclByb3BlcnR5OiB3aGl0ZTtcblxuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGJhc2VsaW5lKDIvMyk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjVzIGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSk7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuXG4gICAgICAgICY6aG92ZXIgPiBzdmcge1xuICAgICAgICAgICRob3ZlckludGVyYWN0aXZlUHJvcHM6IG1hcC1nZXQobWFwLWdldChtYXAtZ2V0KCRuZXV0cmFsQ29sb3JJbnRlcmFjdGlvbiwgaG92ZXIpLCAkY29sb3JQcm9wZXJ0eSksIG9wYWNpdHkpO1xuICAgICAgICAgIG9wYWNpdHk6ICRob3ZlckludGVyYWN0aXZlUHJvcHM7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFjdGl2ZSA+IHN2ZyB7XG4gICAgICAgICAgJGFjdGl2ZUludGVyYWN0aXZlUHJvcHM6IG1hcC1nZXQobWFwLWdldChtYXAtZ2V0KCRuZXV0cmFsQ29sb3JJbnRlcmFjdGlvbiwgYWN0aXZlKSwgJGNvbG9yUHJvcGVydHkpLCBvcGFjaXR5KTtcbiAgICAgICAgICBvcGFjaXR5OiAkYWN0aXZlSW50ZXJhY3RpdmVQcm9wcztcbiAgICAgICAgfVxuXG4gICAgICAgID4gc3ZnIHtcbiAgICAgICAgICBmaWxsOiBjb2xvcihuZXV0cmFsLCB3aGl0ZSk7XG4gICAgICAgICAgaGVpZ2h0OiBiYXNlbGluZSgxKTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICR0cmFuc2l0aW9uVGltaW5nICR0cmFuc2l0aW9uRWFzaW5nO1xuICAgICAgICAgIHdpZHRoOiBiYXNlbGluZSgxKTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAmLS1tZW51IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBjbGVhcjogYm90aDtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICBtYXJnaW4tbGVmdDogYmFzZWxpbmUoMTAvMyk7XG4gICAgfVxuICAgIC5uYXYtLW1vYmlsZS1pdGVtIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAmX19saXN0LWl0ZW0ge1xuICAgICAgcGFkZGluZzogYmFzZWxpbmUoMikgMDtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwIGJhc2VsaW5lKDIpIDAgMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgIH1cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICB9XG4gICAgICA+IGEsXG4gICAgICA+IHNwYW4ge1xuICAgICAgICBAaW5jbHVkZSB0eXBlU3R5bGVzKG1hcC1nZXQobWFwLWdldCgkdHlwb2dyYXBoeSwgZGVmYXVsdCksIGJvbGQtMjQpKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICAgQGluY2x1ZGUgdHlwZVN0eWxlcyhtYXAtZ2V0KG1hcC1nZXQoJHR5cG9ncmFwaHksIGRlZmF1bHQpLCByb21hbi0xNikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICA+IGEuYWN0aXZlLWxpbmsge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xuICAgICAgfVxuICAgIH1cbiAgICAubmF2LS1tZW51X19saXN0LWl0ZW0tLXJlZ2lvbi1zZWxlY3RvciB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJi0taGVhZGVyLXJpZ2h0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IGJhc2VsaW5lKDIpO1xuICAgIC5yZWdpb24tc2VsZWN0b3Ige1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgLmN1cnJlbnQtcmVnaW9uIHtcbiAgICAgICAgQGluY2x1ZGUgdHlwZVN0eWxlcyhtYXAtZ2V0KG1hcC1nZXQoJHR5cG9ncmFwaHksIGRlZmF1bHQpLCBib2xkLTE0KSk7XG4gICAgICAgIGNvbG9yOiBjb2xvcihuZXV0cmFsLCB3aGl0ZSkgIWltcG9ydGFudDtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIEBpbmNsdWRlIHR5cGVTdHlsZXMobWFwLWdldChtYXAtZ2V0KCR0eXBvZ3JhcGh5LCBkZWZhdWx0KSwgcm9tYW4tMTYpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICB9XG4gICAgfVxuICAgIC5zZWFyY2gge1xuICAgICAgcGFkZGluZy1sZWZ0OiBiYXNlbGluZSgyKTtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgLnNlYXJjaC1pY29uIHtcbiAgICAgICAgJGNvbG9yUHJvcGVydHk6IHdoaXRlO1xuXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgJjpob3ZlciBzdmcge1xuICAgICAgICAgICRob3ZlckludGVyYWN0aXZlUHJvcHM6IG1hcC1nZXQobWFwLWdldChtYXAtZ2V0KCRuZXV0cmFsQ29sb3JJbnRlcmFjdGlvbiwgaG92ZXIpLCAkY29sb3JQcm9wZXJ0eSksIG9wYWNpdHkpO1xuICAgICAgICAgIG9wYWNpdHk6ICRob3ZlckludGVyYWN0aXZlUHJvcHM7XG4gICAgICAgIH1cbiAgICAgICAgJjphY3RpdmUgc3ZnIHtcbiAgICAgICAgICAkYWN0aXZlSW50ZXJhY3RpdmVQcm9wczogbWFwLWdldChtYXAtZ2V0KG1hcC1nZXQoJG5ldXRyYWxDb2xvckludGVyYWN0aW9uLCBhY3RpdmUpLCAkY29sb3JQcm9wZXJ0eSksIG9wYWNpdHkpO1xuICAgICAgICAgIG9wYWNpdHk6ICRhY3RpdmVJbnRlcmFjdGl2ZVByb3BzO1xuICAgICAgICB9XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgIGZpbGw6IGNvbG9yKG5ldXRyYWwsICRjb2xvclByb3BlcnR5KTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICR0cmFuc2l0aW9uVGltaW5nICR0cmFuc2l0aW9uRWFzaW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5oaWRkZW4ge1xuICAgICAgLnJlZ2lvbi1zZWxlY3RvcixcbiAgICAgIC5zZWFyY2gge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgICAgPiBzdmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoLjYpO1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBmaWxsOiBjb2xvcihuZXV0cmFsLCB3aGl0ZSk7XG5cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICB0b3A6IC04cHg7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSguNik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgPiBzdmcge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgcmlnaHQ6IGJhc2VsaW5lKDUvMyk7XG4gICAgfVxuICB9XG4gIC5yZWdpb24tc2VsZWN0b3ItbW9iaWxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAxLjVyZW07XG4gICAgYm90dG9tOiBiYXNlbGluZSg3KTtcbiAgfVxufVxuXG4udHJhbnNwYXJlbnQtbWFzdGhlYWQge1xuICBwYWRkaW5nLWJvdHRvbTogYmFzZWxpbmUoNCk7XG59XG5cbi5zZWFyY2gtcGFnZSB7XG4gIC5uYXYge1xuICAgICYtLWhlYWRlci1yaWdodCB7XG4gICAgICAuc2VhcmNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5oaWRkZW4ge1xuICAgICAgICAuc2VhcmNoIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvY29tcG9uZW50cy91bml2ZXJzYWwvdTAxLW5hdmlnYXRpb24vd2VicGFjay9pbmRleC5zY3NzXG4gKiovIiwiJHR5cG9ncmFwaHk6IChkZWZhdWx0OiAoYm9sZC0xNDQ6ICh3ZWlnaHQ6IDcwMCxzaXplOiA4LGxpbmUtaGVpZ2h0OiA4LHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCksYm9sZC05NjogKHdlaWdodDogNzAwLHNpemU6IDYsbGluZS1oZWlnaHQ6IDYsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxib2xkLTcyOiAod2VpZ2h0OiA3MDAsc2l6ZTogNSxsaW5lLWhlaWdodDogNSx0cmFja2luZzogLTI1LG1hcmdpbi1ib3R0b206IDApLHJvbWFuLTcyOiAod2VpZ2h0OiA0MDAsc2l6ZTogNSxsaW5lLWhlaWdodDogNSx0cmFja2luZzogLTI1LG1hcmdpbi1ib3R0b206IDApLGJvbGQtNDg6ICh3ZWlnaHQ6IDcwMCxzaXplOiA0LGxpbmUtaGVpZ2h0OiA0LHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCkscm9tYW4tNDg6ICh3ZWlnaHQ6IDQwMCxzaXplOiA0LGxpbmUtaGVpZ2h0OiA0LHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCksYm9sZC0zNjogKHdlaWdodDogNzAwLHNpemU6IDMsbGluZS1oZWlnaHQ6IDMsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi0zNjogKHdlaWdodDogNDAwLHNpemU6IDMsbGluZS1oZWlnaHQ6IDMsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxib2xkLTI0OiAod2VpZ2h0OiA3MDAsc2l6ZTogMixsaW5lLWhlaWdodDogMix0cmFja2luZzogMCxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi0yNDogKHdlaWdodDogNDAwLHNpemU6IDIsbGluZS1oZWlnaHQ6IDIsdHJhY2tpbmc6IDE1LG1hcmdpbi1ib3R0b206IDApLGJvbGQtMTY6ICh3ZWlnaHQ6IDcwMCxzaXplOiAxLjMzLGxpbmUtaGVpZ2h0OiAyLHRyYWNraW5nOiAyNSxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi0xNjogKHdlaWdodDogNDAwLHNpemU6IDEuMzMsbGluZS1oZWlnaHQ6IDIsdHJhY2tpbmc6IDI1LG1hcmdpbi1ib3R0b206IDApLGJvbGQtMTQ6ICh3ZWlnaHQ6IDcwMCxzaXplOiAxLjE2LGxpbmUtaGVpZ2h0OiAyLHRyYWNraW5nOiAzMCxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi0xNDogKHdlaWdodDogNDAwLHNpemU6IDEuMTYsbGluZS1oZWlnaHQ6IDIsdHJhY2tpbmc6IDI1LG1hcmdpbi1ib3R0b206IDApKSxyZXNwb25zaXZlOiAoZnVsbDogKGJvbGQtMTQ0OiAod2VpZ2h0OiA3MDAsc2l6ZTogMTIsbGluZS1oZWlnaHQ6IDEyLHRyYWNraW5nOiAtMjAwLG1hcmdpbi1ib3R0b206IDApLGJvbGQtOTY6ICh3ZWlnaHQ6IDcwMCxzaXplOiA4LGxpbmUtaGVpZ2h0OiA4LHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCksYm9sZC03MjogKHdlaWdodDogNzAwLHNpemU6IDYsbGluZS1oZWlnaHQ6IDYsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi03MjogKHdlaWdodDogNDAwLHNpemU6IDYsbGluZS1oZWlnaHQ6IDYsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxib2xkLTQ4OiAod2VpZ2h0OiA3MDAsc2l6ZTogNCxsaW5lLWhlaWdodDogNCx0cmFja2luZzogLTI1LG1hcmdpbi1ib3R0b206IDApLHJvbWFuLTQ4OiAod2VpZ2h0OiA0MDAsc2l6ZTogNCxsaW5lLWhlaWdodDogNCx0cmFja2luZzogLTI1LG1hcmdpbi1ib3R0b206IDApLGJvbGQtMzY6ICh3ZWlnaHQ6IDcwMCxzaXplOiAzLGxpbmUtaGVpZ2h0OiAzLHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCkscm9tYW4tMzY6ICh3ZWlnaHQ6IDQwMCxzaXplOiAzLGxpbmUtaGVpZ2h0OiAzLHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCksYm9sZC0yNDogKHdlaWdodDogNzAwLHNpemU6IDIsbGluZS1oZWlnaHQ6IDIsdHJhY2tpbmc6IDAsbWFyZ2luLWJvdHRvbTogMCkscm9tYW4tMjQ6ICh3ZWlnaHQ6IDQwMCxzaXplOiAyLGxpbmUtaGVpZ2h0OiAyLHRyYWNraW5nOiAxNSxtYXJnaW4tYm90dG9tOiAwKSxib2xkLTE2OiAod2VpZ2h0OiA3MDAsc2l6ZTogMS4zMyxsaW5lLWhlaWdodDogMix0cmFja2luZzogMjUsbWFyZ2luLWJvdHRvbTogMCkscm9tYW4tMTY6ICh3ZWlnaHQ6IDQwMCxzaXplOiAxLjMzLGxpbmUtaGVpZ2h0OiAyLHRyYWNraW5nOiAyNSxtYXJnaW4tYm90dG9tOiAwKSxib2xkLTE0OiAod2VpZ2h0OiA3MDAsc2l6ZTogMS4xNixsaW5lLWhlaWdodDogMix0cmFja2luZzogMzAsbWFyZ2luLWJvdHRvbTogMCkscm9tYW4tMTQ6ICh3ZWlnaHQ6IDQwMCxzaXplOiAxLjE2LGxpbmUtaGVpZ2h0OiAyLHRyYWNraW5nOiAyNSxtYXJnaW4tYm90dG9tOiAwKSkpKTtcblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy92YXJpYWJsZXMvdHlwb2dyYXBoeS5qc29uXG4gKiovIiwiJGNvbG9yczogKGV4dHJhLWRhcms6IChvcmFuZ2U6ICNEODJFMTgseWVsbG93OiAjRjk4RTAwLGdyZWVuOiAjMDA4OTUxLGJsdWU6ICMwMDVGRDEscHVycGxlOiAjNEYwMjk5LHBpbms6ICNBMDE3NDQpLGRhcms6IChvcmFuZ2U6ICNGNDVEMjIseWVsbG93OiAjRkZBRDFGLGdyZWVuOiAjMUZCNjUwLGJsdWU6ICMxREExRjIscHVycGxlOiAjNzk0QkM0LHBpbms6ICNFMDI0NUUpLGxpZ2h0OiAob3JhbmdlOiAjRkY4RDU3LHllbGxvdzogI0ZGRDAzRixncmVlbjogIzY4RTA5MCxibHVlOiAjNzFDOUY4LHB1cnBsZTogI0EzN0NFRCxwaW5rOiAjRjY4MDlBKSxleHRyYS1saWdodDogKG9yYW5nZTogI0ZGQkU3OCx5ZWxsb3c6ICNGRkU3NkUsZ3JlZW46ICNBNUYyQUEsYmx1ZTogIzk3RTNGRixwdXJwbGU6ICNDN0I0RkEscGluazogI0ZGQjhDMiksbmV1dHJhbDogKGJsYWNrOiAjMTQxNzFBLGRhcmstZ3JheTogIzY1Nzc4NixsaWdodC1ncmF5OiAjQUFCOEMyLGV4dHJhLWxpZ2h0LWdyYXk6ICNDQ0Q2REQsZXh0cmEtZXh0cmEtbGlnaHQtZ3JheTogI0Y1RjhGQSx3aGl0ZTogI0ZGRkZGRikpO1xuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3ZhcmlhYmxlcy9jb2xvcnMuanNvblxuICoqLyIsIkBpbXBvcnQgJ2NvcmUvdmFyaWFibGVzL2NvbG9ycy5qc29uJztcbkBpbXBvcnQgJ2NvcmUvdmFyaWFibGVzL2JyZWFrcG9pbnRzLmpzb24nO1xuQGltcG9ydCAnY29yZS9zdHlsZS9ncmlkJztcbkBpbXBvcnQgJ2NvcmUvdmFyaWFibGVzL21vdGlvbi5qc29uJztcbkBpbXBvcnQgJ2NvcmUvc3R5bGUvbWl4aW4nO1xuXG4kdHJhbnNpdGlvbkVhc2luZzogbWFwLWdldCgkdHJhbnNpdGlvbnMsIGhvdmVyLWVhc2luZyk7XG4kdHJhbnNpdGlvblRpbWluZzogbWFwLWdldCgkdHJhbnNpdGlvbnMsIGhvdmVyLXRpbWluZyk7XG5cbi5zZWFyY2gtYmFyIHtcbiAgbWFyZ2luOiBhdXRvO1xuICBwYWRkaW5nLWJvdHRvbTogYmFzZWxpbmUoMSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDtcbiAgdHJhbnNpdGlvbjogZmlsbCAkdHJhbnNpdGlvblRpbWluZyAkdHJhbnNpdGlvbkVhc2luZyxcbiAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yICR0cmFuc2l0aW9uVGltaW5nICR0cmFuc2l0aW9uRWFzaW5nO1xuXG4gIHN2ZyB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogLTEwcHg7XG4gICAgdG9wOiAtMTRweDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKC40OCk7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC43NSk7XG4gICAgfVxuICB9XG5cbiAgLmNsb3NlLXN2Zy1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmX19pbnB1dCB7XG4gICAgQGluY2x1ZGUgZm9udChib2xkLTI0LCBmdWxsKTtcbiAgICB3aWR0aDogOTUlO1xuICAgIGNvbG9yOiBjb2xvcihuZXV0cmFsLCB3aGl0ZSk7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgQGluY2x1ZGUgZm9udChib2xkLTQ4LCBmdWxsKTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgQGluY2x1ZGUgc3BhbigxMCk7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG59XG5cbi5uYXZfX3NlYXJjaC1tb2RhbCB7XG4gIHotaW5kZXg6IDEwO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogLTEwMHZoO1xuICBoZWlnaHQ6IDEwMHZoO1xuICB3aWR0aDogMTAwdnc7XG5cbiAgLnNlYXJjaC1iYXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDI1dmg7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgbWFyZ2luOiAwIDYuNiU7XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICBtYXJnaW46IGF1dG87XG4gICAgICB0b3A6IDUwdmg7XG4gICAgfVxuICB9XG5cbiAgJi5zaG93biB7XG4gICAgdG9wOiAwO1xuICB9XG59XG5cbi5wYWdlIC5uYXZfX3NlYXJjaC1tb2RhbCB7XG4gIHRyYW5zaXRpb246IHRvcCAuMnMgZWFzZS1pbi1vdXQ7XG59XG5cbmh0bWwubm8tc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJGNhdGVnb3J5OiBtYXAtZ2V0KCRjb2xvcnMsIGV4dHJhLWxpZ2h0KTtcbkBlYWNoICRjb2xvcktleSwgJGNvbG9yIGluICRjYXRlZ29yeSB7XG4gIC50aGVtZS0tI3skY29sb3JLZXl9IC5zZWFyY2gtYmFyX19pbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAjeyRjb2xvcn07XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC50aGVtZS0tI3skY29sb3JLZXl9IC5zZWFyY2gtYmFyX19pbnB1dDo6c2VsZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgMC4zKTtcbiAgICBjb2xvcjogbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsIG5ldXRyYWwpLCB3aGl0ZSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9jb21wb25lbnRzL3VuaXZlcnNhbC91MDQtc2VhcmNoLWJhci93ZWJwYWNrL2luZGV4LnNjc3NcbiAqKi8iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svfi9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3NcbiAqKi8iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svfi9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3NcbiAqKi8iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svfi9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2Nzc1xuICoqLyIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay93ZWJwYWNrL34vc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzXG4gKiovIiwiQGltcG9ydCAnY29yZS92YXJpYWJsZXMvY29sb3JzLmpzb24nO1xuQGltcG9ydCAnY29yZS9zdHlsZS9ncmlkJztcblxuQGltcG9ydCAnY29yZS9zdHlsZS9taXhpbic7XG5cbi5mb290ZXIge1xuICBtYXJnaW4tdG9wOiBiYXNlbGluZSgyKTtcblxuICAmX19yb3cge1xuICAgIGZsb2F0OiBjbGVhcjtcbiAgICBwYWRkaW5nLWJvdHRvbTogYmFzZWxpbmUoMyk7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctdG9wOiBiYXNlbGluZSgzKTtcbiAgICB9XG4gIH1cblxuICAmLWNvbCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAmX19saXN0IHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsO1xuICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjNzO1xuICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgICAgIG1heC1oZWlnaHQ6IDBweDtcblxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICBwYWRkaW5nLXRvcDogYmFzZWxpbmUoMik7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fcGFyZW50IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luOiBiYXNlbGluZSgxKSAwO1xuXG4gICAgICAuaWNvbi1jb250YWluZXIge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgIGhlaWdodDogYmFzZWxpbmUoMSk7XG4gICAgICAgICAgd2lkdGg6IGJhc2VsaW5lKDEpO1xuICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuM3M7XG4gICAgICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICBjb2xvcjogY29sb3IobmV1dHJhbCwgd2hpdGUpO1xuICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2xpbmssXG4gICAgJl9fZm9vdG5vdGUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19saW5rIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDIpO1xuXG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fZm9vdG5vdGUge1xuICAgICAgaGVpZ2h0OiBiYXNlbGluZSgxKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDIpO1xuXG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICBtYXJnaW4tYm90dG9tOiBub25lO1xuICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgd2lkdGg6IDIwJTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgIG1hcmdpbi10b3A6IGJhc2VsaW5lKDMpO1xuICB9XG59XG5cbi5vcGVuLWFjY29yZGlvbiB7XG4gIC5mb290ZXItY29sX19wYXJlbnQge1xuICAgIGNvbG9yOiBjb2xvcihuZXV0cmFsLCB3aGl0ZSkgIWltcG9ydGFudDtcblxuICAgIC5pY29uLWNvbnRhaW5lciB7XG4gICAgICBzdmcge1xuICAgICAgICBmaWxsOiBjb2xvcihuZXV0cmFsLCB3aGl0ZSkgIWltcG9ydGFudDtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZm9vdGVyLWNvbF9fbGluayB7XG4gICAgY29sb3I6IGNvbG9yKG5ldXRyYWwsIHdoaXRlKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmZvb3Rlci1jb2xfX2xpc3Qge1xuICAgIG1heC1oZWlnaHQ6IDM1MHB4O1xuICAgIHBhZGRpbmctbGVmdDogMzBweDtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjazovLy9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay9jb250ZW50L2pjcl9yb290L2FwcHMvY29yZS10d2l0dGVyL2NvbXBvbmVudHMvdW5pdmVyc2FsL3UwMi1mb290ZXIvd2VicGFjay9pbmRleC5zY3NzXG4gKiovIiwiQGltcG9ydCAnY29yZS92YXJpYWJsZXMvYnJlYWtwb2ludHMuanNvbic7XG5AaW1wb3J0ICdjb3JlL3ZhcmlhYmxlcy9tb3Rpb24uanNvbic7XG5AaW1wb3J0ICdjb3JlL3N0eWxlL3V0aWxpdHkvX2hvdmVyJztcbkBpbXBvcnQgJ2NvcmUvdmFyaWFibGVzL2NvbG9ycy5qc29uJztcbkBpbXBvcnQgJ2NvcmUvc3R5bGUvZ3JpZCc7XG5cbkBpbXBvcnQgJ2NvcmUvc3R5bGUvbWl4aW4nO1xuXG4kdHJhbnNpdGlvblRpbWluZzogbWFwLWdldCgkdHJhbnNpdGlvbnMsIGhvdmVyLXRpbWluZyk7XG4kdHJhbnNpdGlvbkVhc2luZzogbWFwLWdldCgkdHJhbnNpdGlvbnMsIGhvdmVyLWVhc2luZyk7XG5cbi5yZWdpb24tc2VsZWN0b3Ige1xuICAkY29sb3JQcm9wZXJ0eTogd2hpdGU7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgJHRyYW5zaXRpb25UaW1pbmcgJHRyYW5zaXRpb25FYXNpbmc7XG5cbiAgJjpob3ZlciB7XG4gICAgJGhvdmVySW50ZXJhY3RpdmVQcm9wczogbWFwLWdldChtYXAtZ2V0KG1hcC1nZXQoJG5ldXRyYWxDb2xvckludGVyYWN0aW9uLCBob3ZlciksICRjb2xvclByb3BlcnR5KSwgb3BhY2l0eSk7XG4gICAgb3BhY2l0eTogJGhvdmVySW50ZXJhY3RpdmVQcm9wcztcbiAgfVxuICAmOmFjdGl2ZSB7XG4gICAgJGFjdGl2ZUludGVyYWN0aXZlUHJvcHM6IG1hcC1nZXQobWFwLWdldChtYXAtZ2V0KCRuZXV0cmFsQ29sb3JJbnRlcmFjdGlvbiwgYWN0aXZlKSwgJGNvbG9yUHJvcGVydHkpLCBvcGFjaXR5KTtcbiAgICBvcGFjaXR5OiAkYWN0aXZlSW50ZXJhY3RpdmVQcm9wcztcbiAgfVxuXG4gIC5jdXJyZW50LXJlZ2lvbiB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgID4gc3ZnIHtcbiAgICAgIGZpbGw6IGNvbG9yKG5ldXRyYWwsIHdoaXRlKTtcbiAgICAgIGhlaWdodDogYmFzZWxpbmUoMSk7XG4gICAgICBsZWZ0OiA0cHg7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogMnB4O1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgICAgIHdpZHRoOiBiYXNlbGluZSgxKTtcblxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhOm5vdCguY3VycmVudC1yZWdpb24pIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gICYubW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICB3aWR0aDogY2FsYygxMDB2dyArIDIwcHgpO1xuICAgIG1hcmdpbi1yaWdodDogLTIwcHg7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC41cyBsaW5lYXI7XG4gICAgei1pbmRleDogMTI7XG5cbiAgICAubW9kYWxfX2Nsb3NlIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICBoZWlnaHQ6IGJhc2VsaW5lKDUpO1xuICAgICAgcGFkZGluZzogYmFzZWxpbmUoMik7XG4gICAgICB0b3A6IC01cHg7XG5cbiAgICAgIHN2ZyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiBiYXNlbGluZSgxLjUpO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC4yNSk7XG4gICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgIGZpbGw6IGNvbG9yKG5ldXRyYWwsIHdoaXRlKTtcblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC42KTtcbiAgICAgICAgICBmaWxsOiBjb2xvcihuZXV0cmFsLCBkYXJrLWdyYXkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuY3Jvc3Mge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IGJhc2VsaW5lKDUpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIHRvcDogLTVweDtcbiAgICAgICAgICBsZWZ0OiAtMTBweDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC42KTtcbiAgICAgICAgICBmaWxsOiBjb2xvcihuZXV0cmFsLCBkYXJrLWdyYXkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IGJhc2VsaW5lKDMuNzUpO1xuICAgICAgICB0b3A6IGJhc2VsaW5lKDIuMzUpO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1vZGFsX19sYWJlbCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmc6IGJhc2VsaW5lKDYpIGJhc2VsaW5lKDIpO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgd2lkdGg6IDMwJTtcbiAgICAgICAgcGFkZGluZzogMCAxMCU7XG4gICAgICAgIG1hcmdpbi10b3A6IGJhc2VsaW5lKDMpO1xuICAgICAgICBjbGVhcjogcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1vZGFsX19yZWdpb24tbGlzdCB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtMTBweDtcbiAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTQuMjVyZW0pO1xuICAgICAgcGFkZGluZzogMCBiYXNlbGluZSgzKTtcbiAgICAgIG1hcmdpbi10b3A6IGJhc2VsaW5lKDE4KTtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuXG4gICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgYS5jdXJyZW50LXJlZ2lvbixcbiAgICAgIGE6bm90KC5jdXJyZW50LXJlZ2lvbikge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjQpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogYmFzZWxpbmUoMik7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDIpO1xuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogYmFzZWxpbmUoMik7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA3LjVyZW0pO1xuICAgICAgICB3aWR0aDogNzAlO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiBiYXNlbGluZSgxMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5vcGVuIHtcbiAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgICYub3Blbi0tZGVza3RvcCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjk1KTtcblxuICAgICAgICAubW9kYWxfX2xhYmVsIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAuOTUpO1xuICAgIH1cbiAgfVxuXG4gIFtjbGFzcyQ9Jy1zdmctY29udGFpbmVyJ117XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrOi8vL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL2NvbnRlbnQvamNyX3Jvb3QvYXBwcy9jb3JlLXR3aXR0ZXIvY29tcG9uZW50cy91bml2ZXJzYWwvdTAzLXJlZ2lvbi1zZWxlY3Rvci93ZWJwYWNrL2luZGV4LnNjc3NcbiAqKi8iLCJAaW1wb3J0ICdjb3JlL3ZhcmlhYmxlcy9jb2xvcnMuanNvbic7XG5AaW1wb3J0ICdjb3JlL3ZhcmlhYmxlcy9icmVha3BvaW50cy5qc29uJztcbkBpbXBvcnQgJ2NvcmUvc3R5bGUvZ3JpZCc7XG5cbkBpbXBvcnQgJ2NvcmUvc3R5bGUvbWl4aW4nO1xuXG4uc2VhcmNoLW1hc3RoZWFkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiA1LjIlO1xuICBwYWRkaW5nLXRvcDogYmFzZWxpbmUoNCk7XG4gIHBhZGRpbmctYm90dG9tOiBiYXNlbGluZSg2KTtcblxuICA+IHNlY3Rpb246Zmlyc3QtY2hpbGQge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGNvbG9yLCBmaWxsLCBib3JkZXItY29sb3I7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMXM7XG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xuICB9XG5cbiAgLnNlYXJjaC1iYXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBtYXJnaW46IGF1dG87XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBtYXJnaW4tdG9wOiBiYXNlbGluZSg4KTtcbiAgICAgIGJvdHRvbTogYmFzZWxpbmUoNik7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgIGhlaWdodDogYmFzZWxpbmUoMjApO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogYmFzZWxpbmUoNik7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9jb21wb25lbnRzL3VuaXZlcnNhbC91MDctc2VhcmNoLW1hc3RoZWFkL3dlYnBhY2svaW5kZXguc2Nzc1xuICoqLyIsIi5sb2dpbi1jb250YWluZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svY29udGVudC9qY3Jfcm9vdC9hcHBzL2NvcmUtdHdpdHRlci9jb21wb25lbnRzL3VuaXZlcnNhbC91MTAtdXNlci1wcm9maWxlL3dlYnBhY2svaW5kZXguc2Nzc1xuICoqLyJdLCJzb3VyY2VSb290IjoiIn0=*/