A Look Back at the 10th Season

As the Norfolk in Chance fantasy hockey league enters its 11th season, we take a moment to reflect on the incredible journey of last season, where history was made, legends were tested, and new GMs took the league by storm.

The Untouchables: A Championship Debut

In a season full of surprises, none was greater than the rise of The Untouchables, managed by first-year GM Renato. Against all odds, The Untouchables not only competed fiercely but also claimed the ultimate prize: the playoff championship. This marked the first time since the league’s inaugural season that a rookie GM has won the championship, making Renato’s victory one for the history books.

The final match against Ginga Ninja, the runner-up for both the regular season and the playoffs, was a thrilling showcase of strategy and skill. Renato’s team secured the win with a final score of 8-3 in the championship matchup, thanks to standout performances across the board. Here’s a look at some of the key contributions from The Untouchables’ roster during the finals:

  • P. Zacha: 1 Goal, 4 Assists, +4, 2 PIM, 4 SOG, 4 Hits, 4 Blocks
  • T. Thompson: 3 Goals, 3 Assists, +4, 2 PPP, 11 SOG, 2 Hits, 1 Block
  • S. Aho: 2 Goals, -2, 2 PPP, 7 SOG, 3 Hits, 2 Blocks
  • J. Guentzel: 3 Goals, 2 Assists, -1, 3 PPP, 12 SOG, 2 Hits
  • R. Josi: 2 Goals, -3, 14 SOG, 3 Hits, 5 Blocks
  • Z. Werenski: 2 Goals, 2 Assists, -2, 2 PIM, 14 SOG, 7 Blocks

In net, although no wins were recorded, the defensive stats provided by the likes of C. Pickard (60 saves) and J. Binnington (58 saves) helped secure a solid foundation for the victory.

A Season of Highs and Lows

The 10th season was full of intense competition. Rock ’Em Sock ’Em Robots dominated the regular season, finishing in first place, but unfortunately, the playoff journey was cut short, ending in the consolation bracket. Banger Catz, a team known for resilience, clinched third place in the playoffs and secured the consolation bracket win, ending the season 5th overall.

Ginga Ninja showed consistency and determination, finishing second in both the regular season and the playoffs, narrowly missing out on the championship. This team continues to be a formidable force, and all eyes will be on them as they look to build on their strong performance.

League Changes and New Faces

The league bids farewell to two long-standing teams this season. Koala-ty Franchise, a staple of the league for a decade, There are no goalies and Tee2Green, will be departing. The exit of these franchises opens the door for fresh talent, and the league is excited to welcome three new GMs-Pietro, Kevin, and Austin-who will bring new energy and strategies to the table, ensuring the league remains as competitive and unpredictable as ever.

As we gear up for the GM meeting on Saturday, August 24th, hosted by the ever-creative Peterpumpkineater69 (Paul), there’s a palpable sense of anticipation. Will a new rookie GM rise to the challenge as The Untouchables did? Will the seasoned veterans reclaim their glory? Only time will tell, but one thing is certain: the 11th season promises to be one for the ages.

Let the games begin!


Norfolk in Chance Formally Introduces “Toonie Nights” for the 2024-25 Season

Get ready, GMs! The Norfolk in Chance fantasy hockey league is adding a new twist to the upcoming season with the introduction of “Toonie Nights.” These special events will take place five times throughout the season, offering teams a chance to compete for the most points on a single night and win a cash prize of $36.

What are Toonie Nights?

Toonie Nights are designated evenings where every team in the league battles it out to accumulate the most points based on specific criteria. The competition is fierce, and the stakes are high, with the winner of each night taking home $36. Here’s how it all breaks down:

  • Tuesday, October 22nd: The first Toonie Night kicks off with 32 teams competing. The focus will be on accumulating the most points (with goals serving as the tiebreaker).

  • Saturday, November 23rd: The second Toonie Night shifts gears, with 30 teams vying for the most hits plus blocked shots. This night is all about physical play, where grinders and defensive stalwarts can make the difference.

  • Saturday, December 14th: Another points-focused night with 30 teams competing. Once again, goals will be the tiebreaker if needed.

  • Saturday, January 11th: The fourth Toonie Night mirrors the November event, with 30 teams competing to tally the most hits plus blocked shots. It’s another night for the physical players to shine.

  • Saturday, February 22nd: The final Toonie Night of the season will see 28 teams going all out for the most points, with goals as the tiebreaker.

Strategy and Excitement

Toonie Nights add an extra layer of strategy to the season. GMs will need to consider their roster moves and game-day decisions carefully to maximize their chances of winning. On the nights focused on points, offensive powerhouses will be key, while the hits and blocked shots nights will require a focus on gritty, physical players who might not always be the top fantasy picks but can be game-changers in these specific matchups.

The reduced number of teams participating on some nights adds another element of unpredictability. With fewer competitors, the margin for error is slimmer, and every point, hit, and blocked shot will count.

Mark Your Calendars

Toonie Nights promise to be some of the most exciting dates on the league calendar this season. Whether you’re leading the pack or looking for a comeback, these nights offer everyone a chance to make a statement and walk away with a little extra cash.

So, circle those dates on your calendar, strategize accordingly, and get ready to compete. May the best team win!


Voting on Key League Changes for the 2024-25 Season

As the Norfolk in Chance fantasy hockey league enters its 11th season, the upcoming GM meeting will include discussions on potential changes that could impact the league’s dynamics. These proposed voting options will allow managers to shape the future of the league, ensuring that the competition remains challenging, fair, and enjoyable for all participants. Here’s a breakdown of the proposed changes, along with the pros and cons of each.

1. Remove Plus/Minus

Pros: - Less Punitive for Players on Bad Teams: Plus/Minus can be a harsh stat for players on teams that struggle defensively, even if the individual player performs well. Removing this stat could lead to a more balanced evaluation of a player’s performance, focusing on their individual contributions rather than team shortcomings. - Reduces Variability: Plus/Minus can be highly variable and sometimes unpredictable. By removing it, the league may eliminate some of the randomness that can influence matchups, leading to a more consistent scoring system.

Cons: - Loses a Strategic Element: Plus/Minus adds a layer of strategy, particularly when choosing players who might not score as much but still contribute to their team’s success. Removing it could reduce the need for such strategic depth. - Less Realistic: Plus/Minus is a real NHL stat that reflects a player’s impact on the game. Removing it could make the fantasy experience feel less connected to the actual sport.

2. Add Faceoff Wins Instead of Plus/Minus

Pros: - Rewards Specialists: Adding faceoff wins would highlight and reward players who excel in this specific skill, giving more value to centers and faceoff specialists who might not contribute as much in other categories. - Increases Skill Diversity: This change would introduce a new category that requires GMs to consider different player skills when building their roster, potentially making the draft and weekly matchups more interesting and competitive.

Cons: - Could Overemphasize Centers: Faceoff wins are primarily the domain of centers, which could lead to an overemphasis on one position, making it harder for teams to balance their rosters. - Tracking and Strategy: Some managers might find it challenging to track and strategize around faceoff wins, especially if they’re not as familiar with this stat, potentially leading to a steeper learning curve.

3. Add a Utility Position (Any Skater Position Can Play Here)

Pros: - Increased Flexibility: A utility position adds more flexibility to lineups, allowing managers to get more of their top players into the starting lineup regardless of position. This can be particularly useful in dealing with injuries or managing roster depth. - Encourages Diversity: With a utility spot, GMs might draft a wider variety of players, knowing they have an additional spot to accommodate different positions, which could lead to more dynamic team compositions.

Cons: - Potential for Overpowered Lineups: A utility position might allow teams to stack their lineups with too many high-scoring players, potentially leading to less balanced and more lopsided matchups. - Reduces Strategy in Roster Management: Part of the challenge in fantasy hockey is managing the restrictions of position-specific slots. Adding a utility position could reduce the strategic element of deciding who to start on any given day.

4. Add Draft Picks That Can Be Traded (Ties into Keeping 1-3 Players Every Year)

Pros: - Long-Term Strategy: Allowing draft pick trades and keeper players introduces a new layer of long-term strategy, where GMs must balance immediate success with future planning. This can make the league more engaging over multiple seasons. - Increased Trade Activity: The ability to trade draft picks could lead to more trade activity throughout the season, keeping GMs more involved and invested in the league’s outcome. - Rewarding Good Management: Managers who draft well or acquire key players through trades could benefit from keeping those players, adding an additional reward for good management.

Cons: - Potential for Imbalance: If not carefully managed, trading draft picks and keeping players could lead to imbalances in the league, where a few teams become significantly stronger over time, making it harder for other teams to compete. - Complexity: Introducing draft pick trades and keepers adds complexity to the league, which could be challenging for some managers to manage, especially if they’re new to this style of fantasy hockey. - Difficult to Implement: Setting up the rules for draft pick trades and keepers requires careful consideration and clear guidelines to ensure fairness, which could be difficult to achieve.

Conclusion

These proposed changes present exciting opportunities to evolve the Norfolk in Chance fantasy hockey league. Each option has its own set of advantages and challenges, and the decision ultimately comes down to what kind of league experience the GMs want to create. Whether it’s enhancing strategic depth, adding flexibility, or introducing long-term planning, the outcome of these votes will shape the future of the league for seasons to come.


Who Will Claim the #1 Overall Pick?

As the Norfolk in Chance fantasy hockey league gears up for its 11th season, all eyes are on the upcoming draft lottery. This year, 18 teams will battle it out for the coveted #1 overall pick, with varying odds that could set the tone for the entire season.

The Odds

In this high-stakes lottery, Rock ’Em Sock ’Em Robots leads the pack with three chances out of 18 to secure the top spot. As the team that snagged the 1st overall pick last season and clinched back-to-back regular-season championships, they are once again in a prime position to draft a superstar.

The Untouchables, the reigning playoff champions, hold two chances in the draw. After their remarkable debut season, they’re eager to build on their success by adding another elite player to their roster.

The remaining 15 teams each have one chance to claim the #1 pick, making the lottery a true test of fortune. Even with the odds stacked against them, any of these teams could emerge victorious, potentially changing their season’s trajectory.

Here’s how the odds break down for each team:

  • Rock ’Em Sock ’Em Robots: 3/18 (16.67%)
  • The Untouchables: 2/18 (11.11%)
  • The Mighty Ducks: 1/18 (5.56%)
  • God Save the Quinn: 1/18 (5.56%)
  • Ginga Ninja: 1/18 (5.56%)
  • Banger Catz: 1/18 (5.56%)
  • The Midtown Mids: 1/18 (5.56%)
  • Broad Street Bullies’: 1/18 (5.56%)
  • Champagne Campaign: 1/18 (5.56%)
  • As Gudas It Gets!: 1/18 (5.56%)
  • Getting Killed Roughly: 1/18 (5.56%)
  • Peterpumpkineater69: 1/18 (5.56%)
  • Back2Back?: 1/18 (5.56%)
  • Pietro’s Grand Team: 1/18 (5.56%)
  • Mathletes: 1/18 (5.56%)
  • Kevin’s Official Team: 1/18 (5.56%)
  • Shot to the Hart?: 1/18 (5.56%)
  • Austin’s Astounding Team: 1/18 (5.56%)

The McDavid Factor

For the second year in a row, the #1 overall pick is expected to be none other than Connor McDavid. The Edmonton Oilers superstar is a fantasy hockey juggernaut, consistently leading the league in points and delivering game-changing performances. However, McDavid’s undeniable talent comes with a mysterious caveat-the so-called “McDavid Curse.”

Despite being the most sought-after player in the draft, no team with McDavid on its roster has ever won the playoff championship in Norfolk in Chance. Last season, Rock ’Em Sock ’Em Robots selected McDavid first overall, only to see their playoff hopes dashed, continuing the strange trend.

Will this year’s top pickholder be able to break the curse, or will McDavid’s incredible regular-season stats once again fail to translate into playoff glory? It’s a question that looms large over the draft and adds an extra layer of intrigue to the lottery.

The Stakes

Securing the #1 overall pick is more than just a prestigious moment-it could be a league-altering move. Connor McDavid, despite the lingering curse, remains the ultimate prize, capable of propelling any team to regular-season dominance. But will this year’s top pick finally overcome the playoff hurdle that has plagued McDavid-led teams?

As the draft lottery approaches, the anticipation is building. Which team will be lucky enough to draft McDavid? Will the “McDavid Curse” continue, or will it be shattered? The answers will soon be revealed, and the course of the season may hinge on this one pivotal moment. Stay tuned for what promises to be an electrifying start to the season!


2024-25 Power Rankings

As we approach the start of the 2024-25 season, it’s time to assess the power dynamics within the Norfolk in Chance fantasy hockey league. With the draft lottery behind us and the new season on the horizon, here’s how the teams stack up based on their recent performances, manager levels, and roster potential.

1. Rock ’Em Sock ’Em Robots (Manager: Lander)

  • Yahoo! Rating: 1012 (Diamond Level)
  • 2023-24 Record: 153-77-12 (.657)
  • Tier: 5*

Rock ’Em Sock ’Em Robots comes into the new season as the team to beat. With a dominant regular-season record last year and a top-tier Diamond-level manager, Lander’s squad is poised to continue its reign at the top. The only question remains: Can they finally break the “McDavid Curse” and secure a playoff championship?

2. The Untouchables (Manager: Renato)

  • Yahoo! Rating: 925 (Diamond Level)
  • 2023-24 Record: 121-101-20 (.541)
  • Tier: 5*

Last season’s playoff champions, The Untouchables, are riding high with confidence. Renato’s team proved its mettle by taking the title in their debut season. With a solid Diamond rating and a proven ability to win under pressure, they are serious contenders for back-to-back championships.

3. Ginga Ninja (Manager: Mike)

  • Yahoo! Rating: 906 (Diamond Level)
  • 2023-24 Record: 137-85-20 (.607)
  • Tier: 5*

Ginga Ninja consistently ranks among the top teams in the league. With a strong finish last season and a Diamond-level manager, Mike’s team is well-positioned to make another deep playoff run. They’re a team that thrives under pressure and could easily turn their playoff misfortunes around.

4. As Gudas It Gets! (Manager: Tyler)

  • Yahoo! Rating: 825 (Platinum Level)
  • 2023-24 Record: 130-94-18 (.574)
  • Tier: 4*

Tyler’s As Gudas It Gets! is one of the league’s most consistent performers. With a Platinum rating and a solid record from last season, they’re expected to be in the playoff hunt once again. The team’s grit and determination make them a tough opponent, capable of pulling off upsets against higher-ranked teams.

5. Austin’s Astounding Team (Manager: Austin)

  • Yahoo! Rating: 847 (Platinum Level)
  • 2023-24 Record: New Team
  • Tier: 4*

New to the league but already making waves, Austin’s Astounding Team enters with a Platinum rating, indicating strong potential. With fresh strategies and no previous record to weigh them down, they could surprise many established teams.

6. Banger Catz (Manager: Chris S)

  • Yahoo! Rating: 824 (Platinum Level)
  • 2023-24 Record: 128-104-10 (.550)
  • Tier: 4*

Banger Catz had a solid season last year and are looking to build on that success. With a Platinum rating and a strong roster, Chris S’s team is expected to be a contender. They’ve shown they can compete with the best and will be looking to improve on their playoff performance.

7. Getting Killed Roughly (Manager: Eric)

  • Yahoo! Rating: 815 (Platinum Level)
  • 2023-24 Record: 104-123-15 (.461)
  • Tier: 3*

Despite a tough season last year, Eric’s Getting Killed Roughly holds a Platinum rating, suggesting that the team has the potential to bounce back. They’ll need to address their consistency issues, but with the right moves, they could be a dark horse in the playoff race.

8. The Midtown Mids (Manager: Alex)

  • Yahoo! Rating: 812 (Platinum Level)
  • 2023-24 Record: 113-113-16 (.500)
  • Tier: 3*

The Midtown Mids are right in the middle of the pack. Last season, they finished with an even .500 record, and their Platinum rating reflects their ability to compete. They’ll need to find a way to push past the mid-tier if they want to make a deep playoff run.

9. The Mighty Ducks (Manager: Stephen Matwijow)

  • Yahoo! Rating: 765 (Gold Level)
  • 2023-24 Record: 90-137-15 (.403)
  • Tier: 2*

The Mighty Ducks struggled last season, but with a Gold rating, Stephen Matwijow’s team has room for improvement. They’ll need to make some key roster changes to climb the standings, but a return to form isn’t out of the question.

10. Broad Street Bullies’ (Manager: Kevin)

  • Yahoo! Rating: 763 (Gold Level)
  • 2023-24 Record: 104-124-14 (.459)
  • Tier: 2*

Broad Street Bullies’ had a rough season but still managed to maintain a Gold rating. Kevin’s team has the potential to bounce back if they can address some of the issues that plagued them last year. They’ll need to be aggressive on the waiver wire and in trades to compete.

11. Peterpumpkineater69 (Manager: Paul)

  • Yahoo! Rating: 736 (Gold Level)
  • 2023-24 Record: 115-113-14 (.504)
  • Tier: 2*

Paul’s team, Peterpumpkineater69, finished just above .500 last season, reflecting their Gold rating. They’re a solid mid-tier team that could move up the rankings with a strong start to the season. Consistency will be key if they want to challenge for a playoff spot.

12. Champagne Campaign (Manager: Taylor Dempster)

  • Yahoo! Rating: 666 (Silver Level)
  • 2023-24 Record: 100-120-22 (.459)
  • Tier: 2*

Champagne Campaign is coming off a tough season, and their Silver rating reflects that. Taylor Dempster’s team will need to make some major improvements to climb the standings. They have the potential to surprise, but it will take a lot of work.

13. Back2Back? (Manager: John H)

  • Yahoo! Rating: 620 (Silver Level)
  • 2023-24 Record: 125-106-11 (.539)
  • Tier: 2*

Despite a respectable record last season, Back2Back? finds itself with a Silver rating. John H will be looking to prove the doubters wrong by showing that last season was no fluke. They’ll need to stay consistent to break into the upper echelon of teams.

14. Shot to the Hart? (Manager: David)

  • Yahoo! Rating: 614 (Silver Level)
  • 2023-24 Record: 92-127-23 (.428)
  • Tier: 1*

Shot to the Hart? had a challenging season, and their Silver rating suggests there’s still a lot of work to be done. David’s team will need to dig deep to find the winning formula, but with the right moves, they could improve their standing.

15. Mathletes (Manager: Fabs)

  • Yahoo! Rating: 597 (Bronze Level)
  • 2023-24 Record: 111-120-11 (.481)
  • Tier: 1*

Mathletes struggled last season, and their Bronze rating reflects the need for improvement. Fabs will need to take an analytical approach to draft and trades if they want to climb out of the lower tier.

16. Kevin’s Official Team (Manager: Kevin)

  • Yahoo! Rating: 594 (Bronze Level)
  • 2023-24 Record: New Team
  • Tier: 1*

As a new entry in the league, Kevin’s Official Team has a Bronze rating and will be looking to make a mark. With no prior record to weigh them down, they have the potential to surprise, but it will take a lot of work to rise in the rankings.

17. God Save the Quinn (Manager: Stephen)

  • Yahoo! Rating: 593 (Bronze Level)
  • 2023-24 Record: 128-91-23 (.576)
  • Tier: 1*

God Save the Quinn enters the season with a Bronze rating, despite a strong performance last year. Stephen will be looking to prove that the ranking doesn’t reflect the team’s true potential. They’ll need to start strong to shake off the doubters.

18. Pietro’s Grand Team (Manager: Pietro)

  • Yahoo! Rating: 571 (Bronze Level)
  • 2023-24 Record: New Team
  • Tier: 1*

Rounding out the power rankings is Pietro’s Grand Team, a new entrant with a Bronze rating. As the lowest-ranked

team, they have the most to prove. With a clean slate, they’ll be looking to make a strong first impression and climb the standings.

Conclusion

As the 2024-25 season approaches, the Norfolk in Chance fantasy hockey league is primed for another thrilling year. While the power rankings provide a snapshot of where each team stands, the beauty of fantasy hockey is its unpredictability. Will the top-ranked teams maintain their dominance, or will an underdog rise to the occasion? Only time will tell as the puck drops on another exciting season.

LS0tDQp0aXRsZTogIk5vcmZvbGsgaW4gQ2hhbmNlOiAyMDIzLTI0IFJlY2FwIGFuZCBHTSBNZWV0aW5nIFByZXZpZXciDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyMgQSBMb29rIEJhY2sgYXQgdGhlIDEwdGggU2Vhc29uDQoNCg0KIVtdKEM6L1VzZXJzL2JyYW5kL09uZURyaXZlL0Jhc2ViYWxsLzIwMjQvZ21fbWVldGluZ18xLmpwZykNCg0KQXMgdGhlIE5vcmZvbGsgaW4gQ2hhbmNlIGZhbnRhc3kgaG9ja2V5IGxlYWd1ZSBlbnRlcnMgaXRzIDExdGggc2Vhc29uLCB3ZSB0YWtlIGEgbW9tZW50IHRvIHJlZmxlY3Qgb24gdGhlIGluY3JlZGlibGUgam91cm5leSBvZiBsYXN0IHNlYXNvbiwgd2hlcmUgaGlzdG9yeSB3YXMgbWFkZSwgbGVnZW5kcyB3ZXJlIHRlc3RlZCwgYW5kIG5ldyBHTXMgdG9vayB0aGUgbGVhZ3VlIGJ5IHN0b3JtLg0KDQojIyMjIFRoZSBVbnRvdWNoYWJsZXM6IEEgQ2hhbXBpb25zaGlwIERlYnV0DQoNCkluIGEgc2Vhc29uIGZ1bGwgb2Ygc3VycHJpc2VzLCBub25lIHdhcyBncmVhdGVyIHRoYW4gdGhlIHJpc2Ugb2YgKipUaGUgVW50b3VjaGFibGVzKiosIG1hbmFnZWQgYnkgZmlyc3QteWVhciBHTSBSZW5hdG8uIEFnYWluc3QgYWxsIG9kZHMsIFRoZSBVbnRvdWNoYWJsZXMgbm90IG9ubHkgY29tcGV0ZWQgZmllcmNlbHkgYnV0IGFsc28gY2xhaW1lZCB0aGUgdWx0aW1hdGUgcHJpemU6IHRoZSBwbGF5b2ZmIGNoYW1waW9uc2hpcC4gVGhpcyBtYXJrZWQgdGhlIGZpcnN0IHRpbWUgc2luY2UgdGhlIGxlYWd1ZSdzIGluYXVndXJhbCBzZWFzb24gdGhhdCBhIHJvb2tpZSBHTSBoYXMgd29uIHRoZSBjaGFtcGlvbnNoaXAsIG1ha2luZyBSZW5hdG8ncyB2aWN0b3J5IG9uZSBmb3IgdGhlIGhpc3RvcnkgYm9va3MuDQoNClRoZSBmaW5hbCBtYXRjaCBhZ2FpbnN0ICoqR2luZ2EgTmluamEqKiwgdGhlIHJ1bm5lci11cCBmb3IgYm90aCB0aGUgcmVndWxhciBzZWFzb24gYW5kIHRoZSBwbGF5b2Zmcywgd2FzIGEgdGhyaWxsaW5nIHNob3djYXNlIG9mIHN0cmF0ZWd5IGFuZCBza2lsbC4gUmVuYXRvJ3MgdGVhbSBzZWN1cmVkIHRoZSB3aW4gd2l0aCBhIGZpbmFsIHNjb3JlIG9mIDgtMyBpbiB0aGUgY2hhbXBpb25zaGlwIG1hdGNodXAsIHRoYW5rcyB0byBzdGFuZG91dCBwZXJmb3JtYW5jZXMgYWNyb3NzIHRoZSBib2FyZC4gSGVyZSdzIGEgbG9vayBhdCBzb21lIG9mIHRoZSBrZXkgY29udHJpYnV0aW9ucyBmcm9tIFRoZSBVbnRvdWNoYWJsZXMnIHJvc3RlciBkdXJpbmcgdGhlIGZpbmFsczoNCg0KLSAqKlAuIFphY2hhKio6IDEgR29hbCwgNCBBc3Npc3RzLCArNCwgMiBQSU0sIDQgU09HLCA0IEhpdHMsIDQgQmxvY2tzDQotICoqVC4gVGhvbXBzb24qKjogMyBHb2FscywgMyBBc3Npc3RzLCArNCwgMiBQUFAsIDExIFNPRywgMiBIaXRzLCAxIEJsb2NrDQotICoqUy4gQWhvKio6IDIgR29hbHMsIC0yLCAyIFBQUCwgNyBTT0csIDMgSGl0cywgMiBCbG9ja3MNCi0gKipKLiBHdWVudHplbCoqOiAzIEdvYWxzLCAyIEFzc2lzdHMsIC0xLCAzIFBQUCwgMTIgU09HLCAyIEhpdHMNCi0gKipSLiBKb3NpKio6IDIgR29hbHMsIC0zLCAxNCBTT0csIDMgSGl0cywgNSBCbG9ja3MNCi0gKipaLiBXZXJlbnNraSoqOiAyIEdvYWxzLCAyIEFzc2lzdHMsIC0yLCAyIFBJTSwgMTQgU09HLCA3IEJsb2Nrcw0KDQpJbiBuZXQsIGFsdGhvdWdoIG5vIHdpbnMgd2VyZSByZWNvcmRlZCwgdGhlIGRlZmVuc2l2ZSBzdGF0cyBwcm92aWRlZCBieSB0aGUgbGlrZXMgb2YgKipDLiBQaWNrYXJkKiogKDYwIHNhdmVzKSBhbmQgKipKLiBCaW5uaW5ndG9uKiogKDU4IHNhdmVzKSBoZWxwZWQgc2VjdXJlIGEgc29saWQgZm91bmRhdGlvbiBmb3IgdGhlIHZpY3RvcnkuDQoNCiMjIyMgQSBTZWFzb24gb2YgSGlnaHMgYW5kIExvd3MNCg0KVGhlIDEwdGggc2Vhc29uIHdhcyBmdWxsIG9mIGludGVuc2UgY29tcGV0aXRpb24uICoqUm9jayAnRW0gU29jayAnRW0gUm9ib3RzKiogZG9taW5hdGVkIHRoZSByZWd1bGFyIHNlYXNvbiwgZmluaXNoaW5nIGluIGZpcnN0IHBsYWNlLCBidXQgdW5mb3J0dW5hdGVseSwgdGhlIHBsYXlvZmYgam91cm5leSB3YXMgY3V0IHNob3J0LCBlbmRpbmcgaW4gdGhlIGNvbnNvbGF0aW9uIGJyYWNrZXQuICoqQmFuZ2VyIENhdHoqKiwgYSB0ZWFtIGtub3duIGZvciByZXNpbGllbmNlLCBjbGluY2hlZCB0aGlyZCBwbGFjZSBpbiB0aGUgcGxheW9mZnMgYW5kIHNlY3VyZWQgdGhlIGNvbnNvbGF0aW9uIGJyYWNrZXQgd2luLCBlbmRpbmcgdGhlIHNlYXNvbiA1dGggb3ZlcmFsbC4NCg0KKipHaW5nYSBOaW5qYSoqIHNob3dlZCBjb25zaXN0ZW5jeSBhbmQgZGV0ZXJtaW5hdGlvbiwgZmluaXNoaW5nIHNlY29uZCBpbiBib3RoIHRoZSByZWd1bGFyIHNlYXNvbiBhbmQgdGhlIHBsYXlvZmZzLCBuYXJyb3dseSBtaXNzaW5nIG91dCBvbiB0aGUgY2hhbXBpb25zaGlwLiBUaGlzIHRlYW0gY29udGludWVzIHRvIGJlIGEgZm9ybWlkYWJsZSBmb3JjZSwgYW5kIGFsbCBleWVzIHdpbGwgYmUgb24gdGhlbSBhcyB0aGV5IGxvb2sgdG8gYnVpbGQgb24gdGhlaXIgc3Ryb25nIHBlcmZvcm1hbmNlLg0KDQojIyMjIExlYWd1ZSBDaGFuZ2VzIGFuZCBOZXcgRmFjZXMNCg0KVGhlIGxlYWd1ZSBiaWRzIGZhcmV3ZWxsIHRvIHR3byBsb25nLXN0YW5kaW5nIHRlYW1zIHRoaXMgc2Vhc29uLiAqKktvYWxhLXR5IEZyYW5jaGlzZSoqLCBhIHN0YXBsZSBvZiB0aGUgbGVhZ3VlIGZvciBhIGRlY2FkZSwgKipUaGVyZSBhcmUgbm8gZ29hbGllcyoqICBhbmQgKipUZWUyR3JlZW4qKiwgd2lsbCBiZSBkZXBhcnRpbmcuIFRoZSBleGl0IG9mIHRoZXNlIGZyYW5jaGlzZXMgb3BlbnMgdGhlIGRvb3IgZm9yIGZyZXNoIHRhbGVudCwgYW5kIHRoZSBsZWFndWUgaXMgZXhjaXRlZCB0byB3ZWxjb21lIHRocmVlIG5ldyBHTXMtUGlldHJvLCBLZXZpbiwgYW5kIEF1c3Rpbi13aG8gd2lsbCBicmluZyBuZXcgZW5lcmd5IGFuZCBzdHJhdGVnaWVzIHRvIHRoZSB0YWJsZSwgZW5zdXJpbmcgdGhlIGxlYWd1ZSByZW1haW5zIGFzIGNvbXBldGl0aXZlIGFuZCB1bnByZWRpY3RhYmxlIGFzIGV2ZXIuDQoNCkFzIHdlIGdlYXIgdXAgZm9yIHRoZSBHTSBtZWV0aW5nIG9uIFNhdHVyZGF5LCBBdWd1c3QgMjR0aCwgaG9zdGVkIGJ5IHRoZSBldmVyLWNyZWF0aXZlICoqUGV0ZXJwdW1wa2luZWF0ZXI2OSAoUGF1bCkqKiwgdGhlcmUncyBhIHBhbHBhYmxlIHNlbnNlIG9mIGFudGljaXBhdGlvbi4gV2lsbCBhIG5ldyByb29raWUgR00gcmlzZSB0byB0aGUgY2hhbGxlbmdlIGFzIFRoZSBVbnRvdWNoYWJsZXMgZGlkPyBXaWxsIHRoZSBzZWFzb25lZCB2ZXRlcmFucyByZWNsYWltIHRoZWlyIGdsb3J5PyBPbmx5IHRpbWUgd2lsbCB0ZWxsLCBidXQgb25lIHRoaW5nIGlzIGNlcnRhaW46IHRoZSAxMXRoIHNlYXNvbiBwcm9taXNlcyB0byBiZSBvbmUgZm9yIHRoZSBhZ2VzLg0KDQpMZXQgdGhlIGdhbWVzIGJlZ2luIQ0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMjIyBOb3Jmb2xrIGluIENoYW5jZSBGb3JtYWxseSBJbnRyb2R1Y2VzICJUb29uaWUgTmlnaHRzIiBmb3IgdGhlIDIwMjQtMjUgU2Vhc29uDQoNCiFbXShDOi9Vc2Vycy9icmFuZC9PbmVEcml2ZS9CYXNlYmFsbC8yMDI0L2dtX21lZXRpbmdfMi5qcGcpDQoNCkdldCByZWFkeSwgR01zISBUaGUgTm9yZm9sayBpbiBDaGFuY2UgZmFudGFzeSBob2NrZXkgbGVhZ3VlIGlzIGFkZGluZyBhIG5ldyB0d2lzdCB0byB0aGUgdXBjb21pbmcgc2Vhc29uIHdpdGggdGhlIGludHJvZHVjdGlvbiBvZiAiVG9vbmllIE5pZ2h0cy4iIFRoZXNlIHNwZWNpYWwgZXZlbnRzIHdpbGwgdGFrZSBwbGFjZSBmaXZlIHRpbWVzIHRocm91Z2hvdXQgdGhlIHNlYXNvbiwgb2ZmZXJpbmcgdGVhbXMgYSBjaGFuY2UgdG8gY29tcGV0ZSBmb3IgdGhlIG1vc3QgcG9pbnRzIG9uIGEgc2luZ2xlIG5pZ2h0IGFuZCB3aW4gYSBjYXNoIHByaXplIG9mICQzNi4NCg0KIyMjIyBXaGF0IGFyZSBUb29uaWUgTmlnaHRzPw0KDQpUb29uaWUgTmlnaHRzIGFyZSBkZXNpZ25hdGVkIGV2ZW5pbmdzIHdoZXJlIGV2ZXJ5IHRlYW0gaW4gdGhlIGxlYWd1ZSBiYXR0bGVzIGl0IG91dCB0byBhY2N1bXVsYXRlIHRoZSBtb3N0IHBvaW50cyBiYXNlZCBvbiBzcGVjaWZpYyBjcml0ZXJpYS4gVGhlIGNvbXBldGl0aW9uIGlzIGZpZXJjZSwgYW5kIHRoZSBzdGFrZXMgYXJlIGhpZ2gsIHdpdGggdGhlIHdpbm5lciBvZiBlYWNoIG5pZ2h0IHRha2luZyBob21lICQzNi4gSGVyZSdzIGhvdyBpdCBhbGwgYnJlYWtzIGRvd246DQoNCi0gKipUdWVzZGF5LCBPY3RvYmVyIDIybmQ6KiogVGhlIGZpcnN0IFRvb25pZSBOaWdodCBraWNrcyBvZmYgd2l0aCAzMiB0ZWFtcyBjb21wZXRpbmcuIFRoZSBmb2N1cyB3aWxsIGJlIG9uIGFjY3VtdWxhdGluZyB0aGUgbW9zdCBwb2ludHMgKHdpdGggZ29hbHMgc2VydmluZyBhcyB0aGUgdGllYnJlYWtlcikuDQogIA0KLSAqKlNhdHVyZGF5LCBOb3ZlbWJlciAyM3JkOioqIFRoZSBzZWNvbmQgVG9vbmllIE5pZ2h0IHNoaWZ0cyBnZWFycywgd2l0aCAzMCB0ZWFtcyB2eWluZyBmb3IgdGhlIG1vc3QgaGl0cyBwbHVzIGJsb2NrZWQgc2hvdHMuIFRoaXMgbmlnaHQgaXMgYWxsIGFib3V0IHBoeXNpY2FsIHBsYXksIHdoZXJlIGdyaW5kZXJzIGFuZCBkZWZlbnNpdmUgc3RhbHdhcnRzIGNhbiBtYWtlIHRoZSBkaWZmZXJlbmNlLg0KICANCi0gKipTYXR1cmRheSwgRGVjZW1iZXIgMTR0aDoqKiBBbm90aGVyIHBvaW50cy1mb2N1c2VkIG5pZ2h0IHdpdGggMzAgdGVhbXMgY29tcGV0aW5nLiBPbmNlIGFnYWluLCBnb2FscyB3aWxsIGJlIHRoZSB0aWVicmVha2VyIGlmIG5lZWRlZC4NCiAgDQotICoqU2F0dXJkYXksIEphbnVhcnkgMTF0aDoqKiBUaGUgZm91cnRoIFRvb25pZSBOaWdodCBtaXJyb3JzIHRoZSBOb3ZlbWJlciBldmVudCwgd2l0aCAzMCB0ZWFtcyBjb21wZXRpbmcgdG8gdGFsbHkgdGhlIG1vc3QgaGl0cyBwbHVzIGJsb2NrZWQgc2hvdHMuIEl0J3MgYW5vdGhlciBuaWdodCBmb3IgdGhlIHBoeXNpY2FsIHBsYXllcnMgdG8gc2hpbmUuDQoNCi0gKipTYXR1cmRheSwgRmVicnVhcnkgMjJuZDoqKiBUaGUgZmluYWwgVG9vbmllIE5pZ2h0IG9mIHRoZSBzZWFzb24gd2lsbCBzZWUgMjggdGVhbXMgZ29pbmcgYWxsIG91dCBmb3IgdGhlIG1vc3QgcG9pbnRzLCB3aXRoIGdvYWxzIGFzIHRoZSB0aWVicmVha2VyLg0KDQojIyMjIFN0cmF0ZWd5IGFuZCBFeGNpdGVtZW50DQoNClRvb25pZSBOaWdodHMgYWRkIGFuIGV4dHJhIGxheWVyIG9mIHN0cmF0ZWd5IHRvIHRoZSBzZWFzb24uIEdNcyB3aWxsIG5lZWQgdG8gY29uc2lkZXIgdGhlaXIgcm9zdGVyIG1vdmVzIGFuZCBnYW1lLWRheSBkZWNpc2lvbnMgY2FyZWZ1bGx5IHRvIG1heGltaXplIHRoZWlyIGNoYW5jZXMgb2Ygd2lubmluZy4gT24gdGhlIG5pZ2h0cyBmb2N1c2VkIG9uIHBvaW50cywgb2ZmZW5zaXZlIHBvd2VyaG91c2VzIHdpbGwgYmUga2V5LCB3aGlsZSB0aGUgaGl0cyBhbmQgYmxvY2tlZCBzaG90cyBuaWdodHMgd2lsbCByZXF1aXJlIGEgZm9jdXMgb24gZ3JpdHR5LCBwaHlzaWNhbCBwbGF5ZXJzIHdobyBtaWdodCBub3QgYWx3YXlzIGJlIHRoZSB0b3AgZmFudGFzeSBwaWNrcyBidXQgY2FuIGJlIGdhbWUtY2hhbmdlcnMgaW4gdGhlc2Ugc3BlY2lmaWMgbWF0Y2h1cHMuDQoNClRoZSByZWR1Y2VkIG51bWJlciBvZiB0ZWFtcyBwYXJ0aWNpcGF0aW5nIG9uIHNvbWUgbmlnaHRzIGFkZHMgYW5vdGhlciBlbGVtZW50IG9mIHVucHJlZGljdGFiaWxpdHkuIFdpdGggZmV3ZXIgY29tcGV0aXRvcnMsIHRoZSBtYXJnaW4gZm9yIGVycm9yIGlzIHNsaW1tZXIsIGFuZCBldmVyeSBwb2ludCwgaGl0LCBhbmQgYmxvY2tlZCBzaG90IHdpbGwgY291bnQuDQoNCiMjIyMgTWFyayBZb3VyIENhbGVuZGFycw0KDQpUb29uaWUgTmlnaHRzIHByb21pc2UgdG8gYmUgc29tZSBvZiB0aGUgbW9zdCBleGNpdGluZyBkYXRlcyBvbiB0aGUgbGVhZ3VlIGNhbGVuZGFyIHRoaXMgc2Vhc29uLiBXaGV0aGVyIHlvdSdyZSBsZWFkaW5nIHRoZSBwYWNrIG9yIGxvb2tpbmcgZm9yIGEgY29tZWJhY2ssIHRoZXNlIG5pZ2h0cyBvZmZlciBldmVyeW9uZSBhIGNoYW5jZSB0byBtYWtlIGEgc3RhdGVtZW50IGFuZCB3YWxrIGF3YXkgd2l0aCBhIGxpdHRsZSBleHRyYSBjYXNoLg0KDQpTbywgY2lyY2xlIHRob3NlIGRhdGVzIG9uIHlvdXIgY2FsZW5kYXIsIHN0cmF0ZWdpemUgYWNjb3JkaW5nbHksIGFuZCBnZXQgcmVhZHkgdG8gY29tcGV0ZS4gTWF5IHRoZSBiZXN0IHRlYW0gd2luIQ0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KIyMjIFZvdGluZyBvbiBLZXkgTGVhZ3VlIENoYW5nZXMgZm9yIHRoZSAyMDI0LTI1IFNlYXNvbg0KDQohW10oQzovVXNlcnMvYnJhbmQvT25lRHJpdmUvQmFzZWJhbGwvMjAyNC9nbV9tZWV0aW5nXzUuanBnKQ0KDQpBcyB0aGUgTm9yZm9sayBpbiBDaGFuY2UgZmFudGFzeSBob2NrZXkgbGVhZ3VlIGVudGVycyBpdHMgMTF0aCBzZWFzb24sIHRoZSB1cGNvbWluZyBHTSBtZWV0aW5nIHdpbGwgaW5jbHVkZSBkaXNjdXNzaW9ucyBvbiBwb3RlbnRpYWwgY2hhbmdlcyB0aGF0IGNvdWxkIGltcGFjdCB0aGUgbGVhZ3VlJ3MgZHluYW1pY3MuIFRoZXNlIHByb3Bvc2VkIHZvdGluZyBvcHRpb25zIHdpbGwgYWxsb3cgbWFuYWdlcnMgdG8gc2hhcGUgdGhlIGZ1dHVyZSBvZiB0aGUgbGVhZ3VlLCBlbnN1cmluZyB0aGF0IHRoZSBjb21wZXRpdGlvbiByZW1haW5zIGNoYWxsZW5naW5nLCBmYWlyLCBhbmQgZW5qb3lhYmxlIGZvciBhbGwgcGFydGljaXBhbnRzLiBIZXJlJ3MgYSBicmVha2Rvd24gb2YgdGhlIHByb3Bvc2VkIGNoYW5nZXMsIGFsb25nIHdpdGggdGhlIHByb3MgYW5kIGNvbnMgb2YgZWFjaC4NCg0KIyMjIyAxLiAqKlJlbW92ZSBQbHVzL01pbnVzKioNCg0KKipQcm9zOioqDQotICoqTGVzcyBQdW5pdGl2ZSBmb3IgUGxheWVycyBvbiBCYWQgVGVhbXM6KiogUGx1cy9NaW51cyBjYW4gYmUgYSBoYXJzaCBzdGF0IGZvciBwbGF5ZXJzIG9uIHRlYW1zIHRoYXQgc3RydWdnbGUgZGVmZW5zaXZlbHksIGV2ZW4gaWYgdGhlIGluZGl2aWR1YWwgcGxheWVyIHBlcmZvcm1zIHdlbGwuIFJlbW92aW5nIHRoaXMgc3RhdCBjb3VsZCBsZWFkIHRvIGEgbW9yZSBiYWxhbmNlZCBldmFsdWF0aW9uIG9mIGEgcGxheWVyJ3MgcGVyZm9ybWFuY2UsIGZvY3VzaW5nIG9uIHRoZWlyIGluZGl2aWR1YWwgY29udHJpYnV0aW9ucyByYXRoZXIgdGhhbiB0ZWFtIHNob3J0Y29taW5ncy4NCi0gKipSZWR1Y2VzIFZhcmlhYmlsaXR5OioqIFBsdXMvTWludXMgY2FuIGJlIGhpZ2hseSB2YXJpYWJsZSBhbmQgc29tZXRpbWVzIHVucHJlZGljdGFibGUuIEJ5IHJlbW92aW5nIGl0LCB0aGUgbGVhZ3VlIG1heSBlbGltaW5hdGUgc29tZSBvZiB0aGUgcmFuZG9tbmVzcyB0aGF0IGNhbiBpbmZsdWVuY2UgbWF0Y2h1cHMsIGxlYWRpbmcgdG8gYSBtb3JlIGNvbnNpc3RlbnQgc2NvcmluZyBzeXN0ZW0uDQoNCioqQ29uczoqKg0KLSAqKkxvc2VzIGEgU3RyYXRlZ2ljIEVsZW1lbnQ6KiogUGx1cy9NaW51cyBhZGRzIGEgbGF5ZXIgb2Ygc3RyYXRlZ3ksIHBhcnRpY3VsYXJseSB3aGVuIGNob29zaW5nIHBsYXllcnMgd2hvIG1pZ2h0IG5vdCBzY29yZSBhcyBtdWNoIGJ1dCBzdGlsbCBjb250cmlidXRlIHRvIHRoZWlyIHRlYW0ncyBzdWNjZXNzLiBSZW1vdmluZyBpdCBjb3VsZCByZWR1Y2UgdGhlIG5lZWQgZm9yIHN1Y2ggc3RyYXRlZ2ljIGRlcHRoLg0KLSAqKkxlc3MgUmVhbGlzdGljOioqIFBsdXMvTWludXMgaXMgYSByZWFsIE5ITCBzdGF0IHRoYXQgcmVmbGVjdHMgYSBwbGF5ZXIncyBpbXBhY3Qgb24gdGhlIGdhbWUuIFJlbW92aW5nIGl0IGNvdWxkIG1ha2UgdGhlIGZhbnRhc3kgZXhwZXJpZW5jZSBmZWVsIGxlc3MgY29ubmVjdGVkIHRvIHRoZSBhY3R1YWwgc3BvcnQuDQoNCiMjIyMgMi4gKipBZGQgRmFjZW9mZiBXaW5zIEluc3RlYWQgb2YgUGx1cy9NaW51cyoqDQoNCioqUHJvczoqKg0KLSAqKlJld2FyZHMgU3BlY2lhbGlzdHM6KiogQWRkaW5nIGZhY2VvZmYgd2lucyB3b3VsZCBoaWdobGlnaHQgYW5kIHJld2FyZCBwbGF5ZXJzIHdobyBleGNlbCBpbiB0aGlzIHNwZWNpZmljIHNraWxsLCBnaXZpbmcgbW9yZSB2YWx1ZSB0byBjZW50ZXJzIGFuZCBmYWNlb2ZmIHNwZWNpYWxpc3RzIHdobyBtaWdodCBub3QgY29udHJpYnV0ZSBhcyBtdWNoIGluIG90aGVyIGNhdGVnb3JpZXMuDQotICoqSW5jcmVhc2VzIFNraWxsIERpdmVyc2l0eToqKiBUaGlzIGNoYW5nZSB3b3VsZCBpbnRyb2R1Y2UgYSBuZXcgY2F0ZWdvcnkgdGhhdCByZXF1aXJlcyBHTXMgdG8gY29uc2lkZXIgZGlmZmVyZW50IHBsYXllciBza2lsbHMgd2hlbiBidWlsZGluZyB0aGVpciByb3N0ZXIsIHBvdGVudGlhbGx5IG1ha2luZyB0aGUgZHJhZnQgYW5kIHdlZWtseSBtYXRjaHVwcyBtb3JlIGludGVyZXN0aW5nIGFuZCBjb21wZXRpdGl2ZS4NCg0KKipDb25zOioqDQotICoqQ291bGQgT3ZlcmVtcGhhc2l6ZSBDZW50ZXJzOioqIEZhY2VvZmYgd2lucyBhcmUgcHJpbWFyaWx5IHRoZSBkb21haW4gb2YgY2VudGVycywgd2hpY2ggY291bGQgbGVhZCB0byBhbiBvdmVyZW1waGFzaXMgb24gb25lIHBvc2l0aW9uLCBtYWtpbmcgaXQgaGFyZGVyIGZvciB0ZWFtcyB0byBiYWxhbmNlIHRoZWlyIHJvc3RlcnMuDQotICoqVHJhY2tpbmcgYW5kIFN0cmF0ZWd5OioqIFNvbWUgbWFuYWdlcnMgbWlnaHQgZmluZCBpdCBjaGFsbGVuZ2luZyB0byB0cmFjayBhbmQgc3RyYXRlZ2l6ZSBhcm91bmQgZmFjZW9mZiB3aW5zLCBlc3BlY2lhbGx5IGlmIHRoZXkncmUgbm90IGFzIGZhbWlsaWFyIHdpdGggdGhpcyBzdGF0LCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGEgc3RlZXBlciBsZWFybmluZyBjdXJ2ZS4NCg0KIyMjIyAzLiAqKkFkZCBhIFV0aWxpdHkgUG9zaXRpb24gKEFueSBTa2F0ZXIgUG9zaXRpb24gQ2FuIFBsYXkgSGVyZSkqKg0KDQoqKlByb3M6KioNCi0gKipJbmNyZWFzZWQgRmxleGliaWxpdHk6KiogQSB1dGlsaXR5IHBvc2l0aW9uIGFkZHMgbW9yZSBmbGV4aWJpbGl0eSB0byBsaW5ldXBzLCBhbGxvd2luZyBtYW5hZ2VycyB0byBnZXQgbW9yZSBvZiB0aGVpciB0b3AgcGxheWVycyBpbnRvIHRoZSBzdGFydGluZyBsaW5ldXAgcmVnYXJkbGVzcyBvZiBwb3NpdGlvbi4gVGhpcyBjYW4gYmUgcGFydGljdWxhcmx5IHVzZWZ1bCBpbiBkZWFsaW5nIHdpdGggaW5qdXJpZXMgb3IgbWFuYWdpbmcgcm9zdGVyIGRlcHRoLg0KLSAqKkVuY291cmFnZXMgRGl2ZXJzaXR5OioqIFdpdGggYSB1dGlsaXR5IHNwb3QsIEdNcyBtaWdodCBkcmFmdCBhIHdpZGVyIHZhcmlldHkgb2YgcGxheWVycywga25vd2luZyB0aGV5IGhhdmUgYW4gYWRkaXRpb25hbCBzcG90IHRvIGFjY29tbW9kYXRlIGRpZmZlcmVudCBwb3NpdGlvbnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbW9yZSBkeW5hbWljIHRlYW0gY29tcG9zaXRpb25zLg0KDQoqKkNvbnM6KioNCi0gKipQb3RlbnRpYWwgZm9yIE92ZXJwb3dlcmVkIExpbmV1cHM6KiogQSB1dGlsaXR5IHBvc2l0aW9uIG1pZ2h0IGFsbG93IHRlYW1zIHRvIHN0YWNrIHRoZWlyIGxpbmV1cHMgd2l0aCB0b28gbWFueSBoaWdoLXNjb3JpbmcgcGxheWVycywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBsZXNzIGJhbGFuY2VkIGFuZCBtb3JlIGxvcHNpZGVkIG1hdGNodXBzLg0KLSAqKlJlZHVjZXMgU3RyYXRlZ3kgaW4gUm9zdGVyIE1hbmFnZW1lbnQ6KiogUGFydCBvZiB0aGUgY2hhbGxlbmdlIGluIGZhbnRhc3kgaG9ja2V5IGlzIG1hbmFnaW5nIHRoZSByZXN0cmljdGlvbnMgb2YgcG9zaXRpb24tc3BlY2lmaWMgc2xvdHMuIEFkZGluZyBhIHV0aWxpdHkgcG9zaXRpb24gY291bGQgcmVkdWNlIHRoZSBzdHJhdGVnaWMgZWxlbWVudCBvZiBkZWNpZGluZyB3aG8gdG8gc3RhcnQgb24gYW55IGdpdmVuIGRheS4NCg0KIyMjIyA0LiAqKkFkZCBEcmFmdCBQaWNrcyBUaGF0IENhbiBCZSBUcmFkZWQgKFRpZXMgaW50byBLZWVwaW5nIDEtMyBQbGF5ZXJzIEV2ZXJ5IFllYXIpKioNCg0KKipQcm9zOioqDQotICoqTG9uZy1UZXJtIFN0cmF0ZWd5OioqIEFsbG93aW5nIGRyYWZ0IHBpY2sgdHJhZGVzIGFuZCBrZWVwZXIgcGxheWVycyBpbnRyb2R1Y2VzIGEgbmV3IGxheWVyIG9mIGxvbmctdGVybSBzdHJhdGVneSwgd2hlcmUgR01zIG11c3QgYmFsYW5jZSBpbW1lZGlhdGUgc3VjY2VzcyB3aXRoIGZ1dHVyZSBwbGFubmluZy4gVGhpcyBjYW4gbWFrZSB0aGUgbGVhZ3VlIG1vcmUgZW5nYWdpbmcgb3ZlciBtdWx0aXBsZSBzZWFzb25zLg0KLSAqKkluY3JlYXNlZCBUcmFkZSBBY3Rpdml0eToqKiBUaGUgYWJpbGl0eSB0byB0cmFkZSBkcmFmdCBwaWNrcyBjb3VsZCBsZWFkIHRvIG1vcmUgdHJhZGUgYWN0aXZpdHkgdGhyb3VnaG91dCB0aGUgc2Vhc29uLCBrZWVwaW5nIEdNcyBtb3JlIGludm9sdmVkIGFuZCBpbnZlc3RlZCBpbiB0aGUgbGVhZ3VlJ3Mgb3V0Y29tZS4NCi0gKipSZXdhcmRpbmcgR29vZCBNYW5hZ2VtZW50OioqIE1hbmFnZXJzIHdobyBkcmFmdCB3ZWxsIG9yIGFjcXVpcmUga2V5IHBsYXllcnMgdGhyb3VnaCB0cmFkZXMgY291bGQgYmVuZWZpdCBmcm9tIGtlZXBpbmcgdGhvc2UgcGxheWVycywgYWRkaW5nIGFuIGFkZGl0aW9uYWwgcmV3YXJkIGZvciBnb29kIG1hbmFnZW1lbnQuDQoNCioqQ29uczoqKg0KLSAqKlBvdGVudGlhbCBmb3IgSW1iYWxhbmNlOioqIElmIG5vdCBjYXJlZnVsbHkgbWFuYWdlZCwgdHJhZGluZyBkcmFmdCBwaWNrcyBhbmQga2VlcGluZyBwbGF5ZXJzIGNvdWxkIGxlYWQgdG8gaW1iYWxhbmNlcyBpbiB0aGUgbGVhZ3VlLCB3aGVyZSBhIGZldyB0ZWFtcyBiZWNvbWUgc2lnbmlmaWNhbnRseSBzdHJvbmdlciBvdmVyIHRpbWUsIG1ha2luZyBpdCBoYXJkZXIgZm9yIG90aGVyIHRlYW1zIHRvIGNvbXBldGUuDQotICoqQ29tcGxleGl0eToqKiBJbnRyb2R1Y2luZyBkcmFmdCBwaWNrIHRyYWRlcyBhbmQga2VlcGVycyBhZGRzIGNvbXBsZXhpdHkgdG8gdGhlIGxlYWd1ZSwgd2hpY2ggY291bGQgYmUgY2hhbGxlbmdpbmcgZm9yIHNvbWUgbWFuYWdlcnMgdG8gbWFuYWdlLCBlc3BlY2lhbGx5IGlmIHRoZXkncmUgbmV3IHRvIHRoaXMgc3R5bGUgb2YgZmFudGFzeSBob2NrZXkuDQotICoqRGlmZmljdWx0IHRvIEltcGxlbWVudDoqKiBTZXR0aW5nIHVwIHRoZSBydWxlcyBmb3IgZHJhZnQgcGljayB0cmFkZXMgYW5kIGtlZXBlcnMgcmVxdWlyZXMgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIGFuZCBjbGVhciBndWlkZWxpbmVzIHRvIGVuc3VyZSBmYWlybmVzcywgd2hpY2ggY291bGQgYmUgZGlmZmljdWx0IHRvIGFjaGlldmUuDQoNCiMjIyMgQ29uY2x1c2lvbg0KDQpUaGVzZSBwcm9wb3NlZCBjaGFuZ2VzIHByZXNlbnQgZXhjaXRpbmcgb3Bwb3J0dW5pdGllcyB0byBldm9sdmUgdGhlIE5vcmZvbGsgaW4gQ2hhbmNlIGZhbnRhc3kgaG9ja2V5IGxlYWd1ZS4gRWFjaCBvcHRpb24gaGFzIGl0cyBvd24gc2V0IG9mIGFkdmFudGFnZXMgYW5kIGNoYWxsZW5nZXMsIGFuZCB0aGUgZGVjaXNpb24gdWx0aW1hdGVseSBjb21lcyBkb3duIHRvIHdoYXQga2luZCBvZiBsZWFndWUgZXhwZXJpZW5jZSB0aGUgR01zIHdhbnQgdG8gY3JlYXRlLiBXaGV0aGVyIGl0J3MgZW5oYW5jaW5nIHN0cmF0ZWdpYyBkZXB0aCwgYWRkaW5nIGZsZXhpYmlsaXR5LCBvciBpbnRyb2R1Y2luZyBsb25nLXRlcm0gcGxhbm5pbmcsIHRoZSBvdXRjb21lIG9mIHRoZXNlIHZvdGVzIHdpbGwgc2hhcGUgdGhlIGZ1dHVyZSBvZiB0aGUgbGVhZ3VlIGZvciBzZWFzb25zIHRvIGNvbWUuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyMjIFdobyBXaWxsIENsYWltIHRoZSAjMSBPdmVyYWxsIFBpY2s/DQoNCiFbXShDOi9Vc2Vycy9icmFuZC9PbmVEcml2ZS9CYXNlYmFsbC8yMDI0L2dtX21lZXRpbmdfMy5qcGcpDQoNCkFzIHRoZSBOb3Jmb2xrIGluIENoYW5jZSBmYW50YXN5IGhvY2tleSBsZWFndWUgZ2VhcnMgdXAgZm9yIGl0cyAxMXRoIHNlYXNvbiwgYWxsIGV5ZXMgYXJlIG9uIHRoZSB1cGNvbWluZyBkcmFmdCBsb3R0ZXJ5LiBUaGlzIHllYXIsIDE4IHRlYW1zIHdpbGwgYmF0dGxlIGl0IG91dCBmb3IgdGhlIGNvdmV0ZWQgIzEgb3ZlcmFsbCBwaWNrLCB3aXRoIHZhcnlpbmcgb2RkcyB0aGF0IGNvdWxkIHNldCB0aGUgdG9uZSBmb3IgdGhlIGVudGlyZSBzZWFzb24uDQoNCiMjIyMgVGhlIE9kZHMNCg0KSW4gdGhpcyBoaWdoLXN0YWtlcyBsb3R0ZXJ5LCAqKlJvY2sgJ0VtIFNvY2sgJ0VtIFJvYm90cyoqIGxlYWRzIHRoZSBwYWNrIHdpdGggdGhyZWUgY2hhbmNlcyBvdXQgb2YgMTggdG8gc2VjdXJlIHRoZSB0b3Agc3BvdC4gQXMgdGhlIHRlYW0gdGhhdCBzbmFnZ2VkIHRoZSAxc3Qgb3ZlcmFsbCBwaWNrIGxhc3Qgc2Vhc29uIGFuZCBjbGluY2hlZCBiYWNrLXRvLWJhY2sgcmVndWxhci1zZWFzb24gY2hhbXBpb25zaGlwcywgdGhleSBhcmUgb25jZSBhZ2FpbiBpbiBhIHByaW1lIHBvc2l0aW9uIHRvIGRyYWZ0IGEgc3VwZXJzdGFyLg0KDQoqKlRoZSBVbnRvdWNoYWJsZXMqKiwgdGhlIHJlaWduaW5nIHBsYXlvZmYgY2hhbXBpb25zLCBob2xkIHR3byBjaGFuY2VzIGluIHRoZSBkcmF3LiBBZnRlciB0aGVpciByZW1hcmthYmxlIGRlYnV0IHNlYXNvbiwgdGhleSdyZSBlYWdlciB0byBidWlsZCBvbiB0aGVpciBzdWNjZXNzIGJ5IGFkZGluZyBhbm90aGVyIGVsaXRlIHBsYXllciB0byB0aGVpciByb3N0ZXIuDQoNClRoZSByZW1haW5pbmcgMTUgdGVhbXMgZWFjaCBoYXZlIG9uZSBjaGFuY2UgdG8gY2xhaW0gdGhlICMxIHBpY2ssIG1ha2luZyB0aGUgbG90dGVyeSBhIHRydWUgdGVzdCBvZiBmb3J0dW5lLiBFdmVuIHdpdGggdGhlIG9kZHMgc3RhY2tlZCBhZ2FpbnN0IHRoZW0sIGFueSBvZiB0aGVzZSB0ZWFtcyBjb3VsZCBlbWVyZ2UgdmljdG9yaW91cywgcG90ZW50aWFsbHkgY2hhbmdpbmcgdGhlaXIgc2Vhc29uJ3MgdHJhamVjdG9yeS4NCg0KSGVyZSdzIGhvdyB0aGUgb2RkcyBicmVhayBkb3duIGZvciBlYWNoIHRlYW06DQoNCi0gKipSb2NrICdFbSBTb2NrICdFbSBSb2JvdHMqKjogMy8xOCAoMTYuNjclKQ0KLSAqKlRoZSBVbnRvdWNoYWJsZXMqKjogMi8xOCAoMTEuMTElKQ0KLSAqKlRoZSBNaWdodHkgRHVja3MqKjogMS8xOCAoNS41NiUpDQotICoqR29kIFNhdmUgdGhlIFF1aW5uKio6IDEvMTggKDUuNTYlKQ0KLSAqKkdpbmdhIE5pbmphKio6IDEvMTggKDUuNTYlKQ0KLSAqKkJhbmdlciBDYXR6Kio6IDEvMTggKDUuNTYlKQ0KLSAqKlRoZSBNaWR0b3duIE1pZHMqKjogMS8xOCAoNS41NiUpDQotICoqQnJvYWQgU3RyZWV0IEJ1bGxpZXMnKio6IDEvMTggKDUuNTYlKQ0KLSAqKkNoYW1wYWduZSBDYW1wYWlnbioqOiAxLzE4ICg1LjU2JSkNCi0gKipBcyBHdWRhcyBJdCBHZXRzISoqOiAxLzE4ICg1LjU2JSkNCi0gKipHZXR0aW5nIEtpbGxlZCBSb3VnaGx5Kio6IDEvMTggKDUuNTYlKQ0KLSAqKlBldGVycHVtcGtpbmVhdGVyNjkqKjogMS8xOCAoNS41NiUpDQotICoqQmFjazJCYWNrPyoqOiAxLzE4ICg1LjU2JSkNCi0gKipQaWV0cm8ncyBHcmFuZCBUZWFtKio6IDEvMTggKDUuNTYlKQ0KLSAqKk1hdGhsZXRlcyoqOiAxLzE4ICg1LjU2JSkNCi0gKipLZXZpbidzIE9mZmljaWFsIFRlYW0qKjogMS8xOCAoNS41NiUpDQotICoqU2hvdCB0byB0aGUgSGFydD8qKjogMS8xOCAoNS41NiUpDQotICoqQXVzdGluJ3MgQXN0b3VuZGluZyBUZWFtKio6IDEvMTggKDUuNTYlKQ0KDQojIyMjIFRoZSBNY0RhdmlkIEZhY3Rvcg0KDQpGb3IgdGhlIHNlY29uZCB5ZWFyIGluIGEgcm93LCB0aGUgIzEgb3ZlcmFsbCBwaWNrIGlzIGV4cGVjdGVkIHRvIGJlIG5vbmUgb3RoZXIgdGhhbiAqKkNvbm5vciBNY0RhdmlkKiouIFRoZSBFZG1vbnRvbiBPaWxlcnMgc3VwZXJzdGFyIGlzIGEgZmFudGFzeSBob2NrZXkganVnZ2VybmF1dCwgY29uc2lzdGVudGx5IGxlYWRpbmcgdGhlIGxlYWd1ZSBpbiBwb2ludHMgYW5kIGRlbGl2ZXJpbmcgZ2FtZS1jaGFuZ2luZyBwZXJmb3JtYW5jZXMuIEhvd2V2ZXIsIE1jRGF2aWQncyB1bmRlbmlhYmxlIHRhbGVudCBjb21lcyB3aXRoIGEgbXlzdGVyaW91cyBjYXZlYXQtdGhlIHNvLWNhbGxlZCAiTWNEYXZpZCBDdXJzZS4iDQoNCkRlc3BpdGUgYmVpbmcgdGhlIG1vc3Qgc291Z2h0LWFmdGVyIHBsYXllciBpbiB0aGUgZHJhZnQsIG5vIHRlYW0gd2l0aCBNY0RhdmlkIG9uIGl0cyByb3N0ZXIgaGFzIGV2ZXIgd29uIHRoZSBwbGF5b2ZmIGNoYW1waW9uc2hpcCBpbiBOb3Jmb2xrIGluIENoYW5jZS4gTGFzdCBzZWFzb24sICoqUm9jayAnRW0gU29jayAnRW0gUm9ib3RzKiogc2VsZWN0ZWQgTWNEYXZpZCBmaXJzdCBvdmVyYWxsLCBvbmx5IHRvIHNlZSB0aGVpciBwbGF5b2ZmIGhvcGVzIGRhc2hlZCwgY29udGludWluZyB0aGUgc3RyYW5nZSB0cmVuZC4NCg0KV2lsbCB0aGlzIHllYXIncyB0b3AgcGlja2hvbGRlciBiZSBhYmxlIHRvIGJyZWFrIHRoZSBjdXJzZSwgb3Igd2lsbCBNY0RhdmlkJ3MgaW5jcmVkaWJsZSByZWd1bGFyLXNlYXNvbiBzdGF0cyBvbmNlIGFnYWluIGZhaWwgdG8gdHJhbnNsYXRlIGludG8gcGxheW9mZiBnbG9yeT8gSXQncyBhIHF1ZXN0aW9uIHRoYXQgbG9vbXMgbGFyZ2Ugb3ZlciB0aGUgZHJhZnQgYW5kIGFkZHMgYW4gZXh0cmEgbGF5ZXIgb2YgaW50cmlndWUgdG8gdGhlIGxvdHRlcnkuDQoNCiMjIyMgVGhlIFN0YWtlcw0KDQpTZWN1cmluZyB0aGUgIzEgb3ZlcmFsbCBwaWNrIGlzIG1vcmUgdGhhbiBqdXN0IGEgcHJlc3RpZ2lvdXMgbW9tZW50LWl0IGNvdWxkIGJlIGEgbGVhZ3VlLWFsdGVyaW5nIG1vdmUuIENvbm5vciBNY0RhdmlkLCBkZXNwaXRlIHRoZSBsaW5nZXJpbmcgY3Vyc2UsIHJlbWFpbnMgdGhlIHVsdGltYXRlIHByaXplLCBjYXBhYmxlIG9mIHByb3BlbGxpbmcgYW55IHRlYW0gdG8gcmVndWxhci1zZWFzb24gZG9taW5hbmNlLiBCdXQgd2lsbCB0aGlzIHllYXIncyB0b3AgcGljayBmaW5hbGx5IG92ZXJjb21lIHRoZSBwbGF5b2ZmIGh1cmRsZSB0aGF0IGhhcyBwbGFndWVkIE1jRGF2aWQtbGVkIHRlYW1zPw0KDQpBcyB0aGUgZHJhZnQgbG90dGVyeSBhcHByb2FjaGVzLCB0aGUgYW50aWNpcGF0aW9uIGlzIGJ1aWxkaW5nLiBXaGljaCB0ZWFtIHdpbGwgYmUgbHVja3kgZW5vdWdoIHRvIGRyYWZ0IE1jRGF2aWQ/IFdpbGwgdGhlICJNY0RhdmlkIEN1cnNlIiBjb250aW51ZSwgb3Igd2lsbCBpdCBiZSBzaGF0dGVyZWQ/IFRoZSBhbnN3ZXJzIHdpbGwgc29vbiBiZSByZXZlYWxlZCwgYW5kIHRoZSBjb3Vyc2Ugb2YgdGhlIHNlYXNvbiBtYXkgaGluZ2Ugb24gdGhpcyBvbmUgcGl2b3RhbCBtb21lbnQuIFN0YXkgdHVuZWQgZm9yIHdoYXQgcHJvbWlzZXMgdG8gYmUgYW4gZWxlY3RyaWZ5aW5nIHN0YXJ0IHRvIHRoZSBzZWFzb24hDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyMjIDIwMjQtMjUgUG93ZXIgUmFua2luZ3MNCg0KIVtdKEM6L1VzZXJzL2JyYW5kL09uZURyaXZlL0Jhc2ViYWxsLzIwMjQvZ21fbWVldGluZ180LmpwZykNCg0KQXMgd2UgYXBwcm9hY2ggdGhlIHN0YXJ0IG9mIHRoZSAyMDI0LTI1IHNlYXNvbiwgaXQncyB0aW1lIHRvIGFzc2VzcyB0aGUgcG93ZXIgZHluYW1pY3Mgd2l0aGluIHRoZSBOb3Jmb2xrIGluIENoYW5jZSBmYW50YXN5IGhvY2tleSBsZWFndWUuIFdpdGggdGhlIGRyYWZ0IGxvdHRlcnkgYmVoaW5kIHVzIGFuZCB0aGUgbmV3IHNlYXNvbiBvbiB0aGUgaG9yaXpvbiwgaGVyZSdzIGhvdyB0aGUgdGVhbXMgc3RhY2sgdXAgYmFzZWQgb24gdGhlaXIgcmVjZW50IHBlcmZvcm1hbmNlcywgbWFuYWdlciBsZXZlbHMsIGFuZCByb3N0ZXIgcG90ZW50aWFsLg0KDQojIyMjIDEuICoqUm9jayAnRW0gU29jayAnRW0gUm9ib3RzKiogKE1hbmFnZXI6IExhbmRlcikNCi0gKipZYWhvbyEgUmF0aW5nOioqIDEwMTIgKERpYW1vbmQgTGV2ZWwpDQotICoqMjAyMy0yNCBSZWNvcmQ6KiogMTUzLTc3LTEyICguNjU3KQ0KLSAqKlRpZXI6KiogNSoNCg0KUm9jayAnRW0gU29jayAnRW0gUm9ib3RzIGNvbWVzIGludG8gdGhlIG5ldyBzZWFzb24gYXMgdGhlIHRlYW0gdG8gYmVhdC4gV2l0aCBhIGRvbWluYW50IHJlZ3VsYXItc2Vhc29uIHJlY29yZCBsYXN0IHllYXIgYW5kIGEgdG9wLXRpZXIgRGlhbW9uZC1sZXZlbCBtYW5hZ2VyLCBMYW5kZXIncyBzcXVhZCBpcyBwb2lzZWQgdG8gY29udGludWUgaXRzIHJlaWduIGF0IHRoZSB0b3AuIFRoZSBvbmx5IHF1ZXN0aW9uIHJlbWFpbnM6IENhbiB0aGV5IGZpbmFsbHkgYnJlYWsgdGhlICJNY0RhdmlkIEN1cnNlIiBhbmQgc2VjdXJlIGEgcGxheW9mZiBjaGFtcGlvbnNoaXA/DQoNCiMjIyMgMi4gKipUaGUgVW50b3VjaGFibGVzKiogKE1hbmFnZXI6IFJlbmF0bykNCi0gKipZYWhvbyEgUmF0aW5nOioqIDkyNSAoRGlhbW9uZCBMZXZlbCkNCi0gKioyMDIzLTI0IFJlY29yZDoqKiAxMjEtMTAxLTIwICguNTQxKQ0KLSAqKlRpZXI6KiogNSoNCg0KTGFzdCBzZWFzb24ncyBwbGF5b2ZmIGNoYW1waW9ucywgVGhlIFVudG91Y2hhYmxlcywgYXJlIHJpZGluZyBoaWdoIHdpdGggY29uZmlkZW5jZS4gUmVuYXRvJ3MgdGVhbSBwcm92ZWQgaXRzIG1ldHRsZSBieSB0YWtpbmcgdGhlIHRpdGxlIGluIHRoZWlyIGRlYnV0IHNlYXNvbi4gV2l0aCBhIHNvbGlkIERpYW1vbmQgcmF0aW5nIGFuZCBhIHByb3ZlbiBhYmlsaXR5IHRvIHdpbiB1bmRlciBwcmVzc3VyZSwgdGhleSBhcmUgc2VyaW91cyBjb250ZW5kZXJzIGZvciBiYWNrLXRvLWJhY2sgY2hhbXBpb25zaGlwcy4NCg0KIyMjIyAzLiAqKkdpbmdhIE5pbmphKiogKE1hbmFnZXI6IE1pa2UpDQotICoqWWFob28hIFJhdGluZzoqKiA5MDYgKERpYW1vbmQgTGV2ZWwpDQotICoqMjAyMy0yNCBSZWNvcmQ6KiogMTM3LTg1LTIwICguNjA3KQ0KLSAqKlRpZXI6KiogNSoNCg0KR2luZ2EgTmluamEgY29uc2lzdGVudGx5IHJhbmtzIGFtb25nIHRoZSB0b3AgdGVhbXMgaW4gdGhlIGxlYWd1ZS4gV2l0aCBhIHN0cm9uZyBmaW5pc2ggbGFzdCBzZWFzb24gYW5kIGEgRGlhbW9uZC1sZXZlbCBtYW5hZ2VyLCBNaWtlJ3MgdGVhbSBpcyB3ZWxsLXBvc2l0aW9uZWQgdG8gbWFrZSBhbm90aGVyIGRlZXAgcGxheW9mZiBydW4uIFRoZXkncmUgYSB0ZWFtIHRoYXQgdGhyaXZlcyB1bmRlciBwcmVzc3VyZSBhbmQgY291bGQgZWFzaWx5IHR1cm4gdGhlaXIgcGxheW9mZiBtaXNmb3J0dW5lcyBhcm91bmQuDQoNCiMjIyMgNC4gKipBcyBHdWRhcyBJdCBHZXRzISoqIChNYW5hZ2VyOiBUeWxlcikNCi0gKipZYWhvbyEgUmF0aW5nOioqIDgyNSAoUGxhdGludW0gTGV2ZWwpDQotICoqMjAyMy0yNCBSZWNvcmQ6KiogMTMwLTk0LTE4ICguNTc0KQ0KLSAqKlRpZXI6KiogNCoNCg0KVHlsZXIncyBBcyBHdWRhcyBJdCBHZXRzISBpcyBvbmUgb2YgdGhlIGxlYWd1ZSdzIG1vc3QgY29uc2lzdGVudCBwZXJmb3JtZXJzLiBXaXRoIGEgUGxhdGludW0gcmF0aW5nIGFuZCBhIHNvbGlkIHJlY29yZCBmcm9tIGxhc3Qgc2Vhc29uLCB0aGV5J3JlIGV4cGVjdGVkIHRvIGJlIGluIHRoZSBwbGF5b2ZmIGh1bnQgb25jZSBhZ2Fpbi4gVGhlIHRlYW0ncyBncml0IGFuZCBkZXRlcm1pbmF0aW9uIG1ha2UgdGhlbSBhIHRvdWdoIG9wcG9uZW50LCBjYXBhYmxlIG9mIHB1bGxpbmcgb2ZmIHVwc2V0cyBhZ2FpbnN0IGhpZ2hlci1yYW5rZWQgdGVhbXMuDQoNCiMjIyMgNS4gKipBdXN0aW4ncyBBc3RvdW5kaW5nIFRlYW0qKiAoTWFuYWdlcjogQXVzdGluKQ0KLSAqKllhaG9vISBSYXRpbmc6KiogODQ3IChQbGF0aW51bSBMZXZlbCkNCi0gKioyMDIzLTI0IFJlY29yZDoqKiBOZXcgVGVhbQ0KLSAqKlRpZXI6KiogNCoNCg0KTmV3IHRvIHRoZSBsZWFndWUgYnV0IGFscmVhZHkgbWFraW5nIHdhdmVzLCBBdXN0aW4ncyBBc3RvdW5kaW5nIFRlYW0gZW50ZXJzIHdpdGggYSBQbGF0aW51bSByYXRpbmcsIGluZGljYXRpbmcgc3Ryb25nIHBvdGVudGlhbC4gV2l0aCBmcmVzaCBzdHJhdGVnaWVzIGFuZCBubyBwcmV2aW91cyByZWNvcmQgdG8gd2VpZ2ggdGhlbSBkb3duLCB0aGV5IGNvdWxkIHN1cnByaXNlIG1hbnkgZXN0YWJsaXNoZWQgdGVhbXMuDQoNCiMjIyMgNi4gKipCYW5nZXIgQ2F0eioqIChNYW5hZ2VyOiBDaHJpcyBTKQ0KLSAqKllhaG9vISBSYXRpbmc6KiogODI0IChQbGF0aW51bSBMZXZlbCkNCi0gKioyMDIzLTI0IFJlY29yZDoqKiAxMjgtMTA0LTEwICguNTUwKQ0KLSAqKlRpZXI6KiogNCoNCg0KQmFuZ2VyIENhdHogaGFkIGEgc29saWQgc2Vhc29uIGxhc3QgeWVhciBhbmQgYXJlIGxvb2tpbmcgdG8gYnVpbGQgb24gdGhhdCBzdWNjZXNzLiBXaXRoIGEgUGxhdGludW0gcmF0aW5nIGFuZCBhIHN0cm9uZyByb3N0ZXIsIENocmlzIFMncyB0ZWFtIGlzIGV4cGVjdGVkIHRvIGJlIGEgY29udGVuZGVyLiBUaGV5J3ZlIHNob3duIHRoZXkgY2FuIGNvbXBldGUgd2l0aCB0aGUgYmVzdCBhbmQgd2lsbCBiZSBsb29raW5nIHRvIGltcHJvdmUgb24gdGhlaXIgcGxheW9mZiBwZXJmb3JtYW5jZS4NCg0KIyMjIyA3LiAqKkdldHRpbmcgS2lsbGVkIFJvdWdobHkqKiAoTWFuYWdlcjogRXJpYykNCi0gKipZYWhvbyEgUmF0aW5nOioqIDgxNSAoUGxhdGludW0gTGV2ZWwpDQotICoqMjAyMy0yNCBSZWNvcmQ6KiogMTA0LTEyMy0xNSAoLjQ2MSkNCi0gKipUaWVyOioqIDMqDQoNCkRlc3BpdGUgYSB0b3VnaCBzZWFzb24gbGFzdCB5ZWFyLCBFcmljJ3MgR2V0dGluZyBLaWxsZWQgUm91Z2hseSBob2xkcyBhIFBsYXRpbnVtIHJhdGluZywgc3VnZ2VzdGluZyB0aGF0IHRoZSB0ZWFtIGhhcyB0aGUgcG90ZW50aWFsIHRvIGJvdW5jZSBiYWNrLiBUaGV5J2xsIG5lZWQgdG8gYWRkcmVzcyB0aGVpciBjb25zaXN0ZW5jeSBpc3N1ZXMsIGJ1dCB3aXRoIHRoZSByaWdodCBtb3ZlcywgdGhleSBjb3VsZCBiZSBhIGRhcmsgaG9yc2UgaW4gdGhlIHBsYXlvZmYgcmFjZS4NCg0KIyMjIyA4LiAqKlRoZSBNaWR0b3duIE1pZHMqKiAoTWFuYWdlcjogQWxleCkNCi0gKipZYWhvbyEgUmF0aW5nOioqIDgxMiAoUGxhdGludW0gTGV2ZWwpDQotICoqMjAyMy0yNCBSZWNvcmQ6KiogMTEzLTExMy0xNiAoLjUwMCkNCi0gKipUaWVyOioqIDMqDQoNClRoZSBNaWR0b3duIE1pZHMgYXJlIHJpZ2h0IGluIHRoZSBtaWRkbGUgb2YgdGhlIHBhY2suIExhc3Qgc2Vhc29uLCB0aGV5IGZpbmlzaGVkIHdpdGggYW4gZXZlbiAuNTAwIHJlY29yZCwgYW5kIHRoZWlyIFBsYXRpbnVtIHJhdGluZyByZWZsZWN0cyB0aGVpciBhYmlsaXR5IHRvIGNvbXBldGUuIFRoZXknbGwgbmVlZCB0byBmaW5kIGEgd2F5IHRvIHB1c2ggcGFzdCB0aGUgbWlkLXRpZXIgaWYgdGhleSB3YW50IHRvIG1ha2UgYSBkZWVwIHBsYXlvZmYgcnVuLg0KDQojIyMjIDkuICoqVGhlIE1pZ2h0eSBEdWNrcyoqIChNYW5hZ2VyOiBTdGVwaGVuIE1hdHdpam93KQ0KLSAqKllhaG9vISBSYXRpbmc6KiogNzY1IChHb2xkIExldmVsKQ0KLSAqKjIwMjMtMjQgUmVjb3JkOioqIDkwLTEzNy0xNSAoLjQwMykNCi0gKipUaWVyOioqIDIqDQoNClRoZSBNaWdodHkgRHVja3Mgc3RydWdnbGVkIGxhc3Qgc2Vhc29uLCBidXQgd2l0aCBhIEdvbGQgcmF0aW5nLCBTdGVwaGVuIE1hdHdpam93J3MgdGVhbSBoYXMgcm9vbSBmb3IgaW1wcm92ZW1lbnQuIFRoZXknbGwgbmVlZCB0byBtYWtlIHNvbWUga2V5IHJvc3RlciBjaGFuZ2VzIHRvIGNsaW1iIHRoZSBzdGFuZGluZ3MsIGJ1dCBhIHJldHVybiB0byBmb3JtIGlzbid0IG91dCBvZiB0aGUgcXVlc3Rpb24uDQoNCiMjIyMgMTAuICoqQnJvYWQgU3RyZWV0IEJ1bGxpZXMnKiogKE1hbmFnZXI6IEtldmluKQ0KLSAqKllhaG9vISBSYXRpbmc6KiogNzYzIChHb2xkIExldmVsKQ0KLSAqKjIwMjMtMjQgUmVjb3JkOioqIDEwNC0xMjQtMTQgKC40NTkpDQotICoqVGllcjoqKiAyKg0KDQpCcm9hZCBTdHJlZXQgQnVsbGllcycgaGFkIGEgcm91Z2ggc2Vhc29uIGJ1dCBzdGlsbCBtYW5hZ2VkIHRvIG1haW50YWluIGEgR29sZCByYXRpbmcuIEtldmluJ3MgdGVhbSBoYXMgdGhlIHBvdGVudGlhbCB0byBib3VuY2UgYmFjayBpZiB0aGV5IGNhbiBhZGRyZXNzIHNvbWUgb2YgdGhlIGlzc3VlcyB0aGF0IHBsYWd1ZWQgdGhlbSBsYXN0IHllYXIuIFRoZXknbGwgbmVlZCB0byBiZSBhZ2dyZXNzaXZlIG9uIHRoZSB3YWl2ZXIgd2lyZSBhbmQgaW4gdHJhZGVzIHRvIGNvbXBldGUuDQoNCiMjIyMgMTEuICoqUGV0ZXJwdW1wa2luZWF0ZXI2OSoqIChNYW5hZ2VyOiBQYXVsKQ0KLSAqKllhaG9vISBSYXRpbmc6KiogNzM2IChHb2xkIExldmVsKQ0KLSAqKjIwMjMtMjQgUmVjb3JkOioqIDExNS0xMTMtMTQgKC41MDQpDQotICoqVGllcjoqKiAyKg0KDQpQYXVsJ3MgdGVhbSwgUGV0ZXJwdW1wa2luZWF0ZXI2OSwgZmluaXNoZWQganVzdCBhYm92ZSAuNTAwIGxhc3Qgc2Vhc29uLCByZWZsZWN0aW5nIHRoZWlyIEdvbGQgcmF0aW5nLiBUaGV5J3JlIGEgc29saWQgbWlkLXRpZXIgdGVhbSB0aGF0IGNvdWxkIG1vdmUgdXAgdGhlIHJhbmtpbmdzIHdpdGggYSBzdHJvbmcgc3RhcnQgdG8gdGhlIHNlYXNvbi4gQ29uc2lzdGVuY3kgd2lsbCBiZSBrZXkgaWYgdGhleSB3YW50IHRvIGNoYWxsZW5nZSBmb3IgYSBwbGF5b2ZmIHNwb3QuDQoNCiMjIyMgMTIuICoqQ2hhbXBhZ25lIENhbXBhaWduKiogKE1hbmFnZXI6IFRheWxvciBEZW1wc3RlcikNCi0gKipZYWhvbyEgUmF0aW5nOioqIDY2NiAoU2lsdmVyIExldmVsKQ0KLSAqKjIwMjMtMjQgUmVjb3JkOioqIDEwMC0xMjAtMjIgKC40NTkpDQotICoqVGllcjoqKiAyKg0KDQpDaGFtcGFnbmUgQ2FtcGFpZ24gaXMgY29taW5nIG9mZiBhIHRvdWdoIHNlYXNvbiwgYW5kIHRoZWlyIFNpbHZlciByYXRpbmcgcmVmbGVjdHMgdGhhdC4gVGF5bG9yIERlbXBzdGVyJ3MgdGVhbSB3aWxsIG5lZWQgdG8gbWFrZSBzb21lIG1ham9yIGltcHJvdmVtZW50cyB0byBjbGltYiB0aGUgc3RhbmRpbmdzLiBUaGV5IGhhdmUgdGhlIHBvdGVudGlhbCB0byBzdXJwcmlzZSwgYnV0IGl0IHdpbGwgdGFrZSBhIGxvdCBvZiB3b3JrLg0KDQojIyMjIDEzLiAqKkJhY2syQmFjaz8qKiAoTWFuYWdlcjogSm9obiBIKQ0KLSAqKllhaG9vISBSYXRpbmc6KiogNjIwIChTaWx2ZXIgTGV2ZWwpDQotICoqMjAyMy0yNCBSZWNvcmQ6KiogMTI1LTEwNi0xMSAoLjUzOSkNCi0gKipUaWVyOioqIDIqDQoNCkRlc3BpdGUgYSByZXNwZWN0YWJsZSByZWNvcmQgbGFzdCBzZWFzb24sIEJhY2syQmFjaz8gZmluZHMgaXRzZWxmIHdpdGggYSBTaWx2ZXIgcmF0aW5nLiBKb2huIEggd2lsbCBiZSBsb29raW5nIHRvIHByb3ZlIHRoZSBkb3VidGVycyB3cm9uZyBieSBzaG93aW5nIHRoYXQgbGFzdCBzZWFzb24gd2FzIG5vIGZsdWtlLiBUaGV5J2xsIG5lZWQgdG8gc3RheSBjb25zaXN0ZW50IHRvIGJyZWFrIGludG8gdGhlIHVwcGVyIGVjaGVsb24gb2YgdGVhbXMuDQoNCiMjIyMgMTQuICoqU2hvdCB0byB0aGUgSGFydD8qKiAoTWFuYWdlcjogRGF2aWQpDQotICoqWWFob28hIFJhdGluZzoqKiA2MTQgKFNpbHZlciBMZXZlbCkNCi0gKioyMDIzLTI0IFJlY29yZDoqKiA5Mi0xMjctMjMgKC40MjgpDQotICoqVGllcjoqKiAxKg0KDQpTaG90IHRvIHRoZSBIYXJ0PyBoYWQgYSBjaGFsbGVuZ2luZyBzZWFzb24sIGFuZCB0aGVpciBTaWx2ZXIgcmF0aW5nIHN1Z2dlc3RzIHRoZXJlJ3Mgc3RpbGwgYSBsb3Qgb2Ygd29yayB0byBiZSBkb25lLiBEYXZpZCdzIHRlYW0gd2lsbCBuZWVkIHRvIGRpZyBkZWVwIHRvIGZpbmQgdGhlIHdpbm5pbmcgZm9ybXVsYSwgYnV0IHdpdGggdGhlIHJpZ2h0IG1vdmVzLCB0aGV5IGNvdWxkIGltcHJvdmUgdGhlaXIgc3RhbmRpbmcuDQoNCiMjIyMgMTUuICoqTWF0aGxldGVzKiogKE1hbmFnZXI6IEZhYnMpDQotICoqWWFob28hIFJhdGluZzoqKiA1OTcgKEJyb256ZSBMZXZlbCkNCi0gKioyMDIzLTI0IFJlY29yZDoqKiAxMTEtMTIwLTExICguNDgxKQ0KLSAqKlRpZXI6KiogMSoNCg0KTWF0aGxldGVzIHN0cnVnZ2xlZCBsYXN0IHNlYXNvbiwgYW5kIHRoZWlyIEJyb256ZSByYXRpbmcgcmVmbGVjdHMgdGhlIG5lZWQgZm9yIGltcHJvdmVtZW50LiBGYWJzIHdpbGwgbmVlZCB0byB0YWtlIGFuIGFuYWx5dGljYWwgYXBwcm9hY2ggdG8gZHJhZnQgYW5kIHRyYWRlcyBpZiB0aGV5IHdhbnQgdG8gY2xpbWIgb3V0IG9mIHRoZSBsb3dlciB0aWVyLg0KDQojIyMjIDE2LiAqKktldmluJ3MgT2ZmaWNpYWwgVGVhbSoqIChNYW5hZ2VyOiBLZXZpbikNCi0gKipZYWhvbyEgUmF0aW5nOioqIDU5NCAoQnJvbnplIExldmVsKQ0KLSAqKjIwMjMtMjQgUmVjb3JkOioqIE5ldyBUZWFtDQotICoqVGllcjoqKiAxKg0KDQpBcyBhIG5ldyBlbnRyeSBpbiB0aGUgbGVhZ3VlLCBLZXZpbidzIE9mZmljaWFsIFRlYW0gaGFzIGEgQnJvbnplIHJhdGluZyBhbmQgd2lsbCBiZSBsb29raW5nIHRvIG1ha2UgYSBtYXJrLiBXaXRoIG5vIHByaW9yIHJlY29yZCB0byB3ZWlnaCB0aGVtIGRvd24sIHRoZXkgaGF2ZSB0aGUgcG90ZW50aWFsIHRvIHN1cnByaXNlLCBidXQgaXQgd2lsbCB0YWtlIGEgbG90IG9mIHdvcmsgdG8gcmlzZSBpbiB0aGUgcmFua2luZ3MuDQoNCiMjIyMgMTcuICoqR29kIFNhdmUgdGhlIFF1aW5uKiogKE1hbmFnZXI6IFN0ZXBoZW4pDQotICoqWWFob28hIFJhdGluZzoqKiA1OTMgKEJyb256ZSBMZXZlbCkNCi0gKioyMDIzLTI0IFJlY29yZDoqKiAxMjgtOTEtMjMgKC41NzYpDQotICoqVGllcjoqKiAxKg0KDQpHb2QgU2F2ZSB0aGUgUXVpbm4gZW50ZXJzIHRoZSBzZWFzb24gd2l0aCBhIEJyb256ZSByYXRpbmcsIGRlc3BpdGUgYSBzdHJvbmcgcGVyZm9ybWFuY2UgbGFzdCB5ZWFyLiBTdGVwaGVuIHdpbGwgYmUgbG9va2luZyB0byBwcm92ZSB0aGF0IHRoZSByYW5raW5nIGRvZXNuJ3QgcmVmbGVjdCB0aGUgdGVhbSdzIHRydWUgcG90ZW50aWFsLiBUaGV5J2xsIG5lZWQgdG8gc3RhcnQgc3Ryb25nIHRvIHNoYWtlIG9mZiB0aGUgZG91YnRlcnMuDQoNCiMjIyMgMTguICoqUGlldHJvJ3MgR3JhbmQgVGVhbSoqIChNYW5hZ2VyOiBQaWV0cm8pDQotICoqWWFob28hIFJhdGluZzoqKiA1NzEgKEJyb256ZSBMZXZlbCkNCi0gKioyMDIzLTI0IFJlY29yZDoqKiBOZXcgVGVhbQ0KLSAqKlRpZXI6KiogMSoNCg0KUm91bmRpbmcgb3V0IHRoZSBwb3dlciByYW5raW5ncyBpcyBQaWV0cm8ncyBHcmFuZCBUZWFtLCBhIG5ldyBlbnRyYW50IHdpdGggYSBCcm9uemUgcmF0aW5nLiBBcyB0aGUgbG93ZXN0LXJhbmtlZA0KDQogdGVhbSwgdGhleSBoYXZlIHRoZSBtb3N0IHRvIHByb3ZlLiBXaXRoIGEgY2xlYW4gc2xhdGUsIHRoZXknbGwgYmUgbG9va2luZyB0byBtYWtlIGEgc3Ryb25nIGZpcnN0IGltcHJlc3Npb24gYW5kIGNsaW1iIHRoZSBzdGFuZGluZ3MuDQoNCiMjIyMgQ29uY2x1c2lvbg0KDQpBcyB0aGUgMjAyNC0yNSBzZWFzb24gYXBwcm9hY2hlcywgdGhlIE5vcmZvbGsgaW4gQ2hhbmNlIGZhbnRhc3kgaG9ja2V5IGxlYWd1ZSBpcyBwcmltZWQgZm9yIGFub3RoZXIgdGhyaWxsaW5nIHllYXIuIFdoaWxlIHRoZSBwb3dlciByYW5raW5ncyBwcm92aWRlIGEgc25hcHNob3Qgb2Ygd2hlcmUgZWFjaCB0ZWFtIHN0YW5kcywgdGhlIGJlYXV0eSBvZiBmYW50YXN5IGhvY2tleSBpcyBpdHMgdW5wcmVkaWN0YWJpbGl0eS4gV2lsbCB0aGUgdG9wLXJhbmtlZCB0ZWFtcyBtYWludGFpbiB0aGVpciBkb21pbmFuY2UsIG9yIHdpbGwgYW4gdW5kZXJkb2cgcmlzZSB0byB0aGUgb2NjYXNpb24/IE9ubHkgdGltZSB3aWxsIHRlbGwgYXMgdGhlIHB1Y2sgZHJvcHMgb24gYW5vdGhlciBleGNpdGluZyBzZWFzb24u