Compare commits

...

34 Commits

Author SHA1 Message Date
7025589597 linx 2023-07-07 11:08:00 +02:00
c7c8990fb0 ieso 2023-07-07 11:06:22 +02:00
e10b91429e css 2023-07-06 11:29:33 +02:00
f4a17fd77f css 2023-07-06 11:20:55 +02:00
f0f2932187 style 2023-07-06 11:10:51 +02:00
03f7385389 colors 2023-07-06 11:09:27 +02:00
af9d4aa82b bocciofila 2023-07-06 11:06:46 +02:00
643fca5d06 clippy 2023-07-06 11:04:37 +02:00
42de59f96f button 2023-07-05 17:34:40 +02:00
8bf1201888 always play 2023-07-05 17:23:24 +02:00
c7cfada2eb meno timeout confetti 2023-07-05 16:57:23 +02:00
d922f01df1 bocciofila 2023-07-05 16:55:12 +02:00
e602555567 matrix 2023-06-28 11:46:18 +02:00
b9a87a61f6 articolo the office 2023-06-23 11:51:40 +02:00
583261cc48 index.html 2023-06-23 11:43:05 +02:00
583fee3997 articolo su the office 2023-06-23 11:42:00 +02:00
1e0e4339f6 correction 2023-06-20 18:24:27 +02:00
6a258aa00d supermario 64 2023-06-20 18:22:36 +02:00
e63c9d2dcd htmx 2023-06-03 16:10:43 +02:00
307f6e4a27 home 2023-06-03 00:48:00 +02:00
b92d0e46d1 migliorato il welcome 2023-06-03 00:44:25 +02:00
40da90f5ee link to klaus 2023-06-03 00:17:46 +02:00
07ac759411 index for git 2023-06-03 00:16:10 +02:00
ed822f0a0f more secretwiki 2023-06-02 23:16:55 +02:00
17efde8549 secretwiki 2023-05-30 15:37:22 +02:00
748a501877 more 2023-05-30 15:35:43 +02:00
86c0d348d5 glob index page 2023-05-28 13:24:20 +02:00
bb2439c74e strong 2023-05-28 13:22:21 +02:00
f5c739679e sito quartaparete 2023-05-28 13:21:37 +02:00
177d2f630c sito quartaparete 2023-05-28 13:17:15 +02:00
c759f9e631 secretwiki 2023-05-25 18:42:15 +02:00
52639410e5 secret wiki 2023-05-25 18:39:20 +02:00
21c5a0a1a5 jpg instead of gif 2023-05-22 22:18:27 +02:00
a6cbc5512f trains 2023-05-22 22:12:05 +02:00
211 changed files with 5540 additions and 562 deletions

View File

@ -0,0 +1,4 @@
{
"m.server": "goulash.lezzo.org:443"
}

View File

@ -156,6 +156,8 @@ summary {
table { table {
/* multiple borders merge */ /* multiple borders merge */
table-layout: fixed;
width: 100%;
border-collapse: collapse; border-collapse: collapse;
display: block; display: block;
} }
@ -164,6 +166,9 @@ tbody>tr:nth-child(odd) {
/* set background of odd cells */ /* set background of odd cells */
background: var(--gray); background: var(--gray);
} }
td{
word-wrap: break-word;
}
td, td,
th { th {

View File

@ -36,7 +36,7 @@ body { width: 100%; height: 100%; }
Un blog.<br>Come negli anni 2000.<br>Con molte meno speranze, e molte più feels. Un blog.<br>Come negli anni 2000.<br>Con molte meno speranze, e molte più feels.
</p> </p>
<p> <p>
<p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p> <p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p>
<br><em>What a beautiful face<br> <br><em>What a beautiful face<br>
I have found in this place<br> I have found in this place<br>
That is circling all round the sun<br> That is circling all round the sun<br>
@ -46,19 +46,20 @@ In a blink of an eye and be gone from me<br>
Soft and sweet<br> Soft and sweet<br>
Let me hold it close and keep it here with me<br></em> Let me hold it close and keep it here with me<br></em>
</p> </p>
<p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p> <p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p>
<p> <p>
<br> <br>
Articoli: Articoli:
<ul> <ul>
<li><a href="bsg.html">Battlestar Galactica: a guide for watching the show</a></li> <li><a href="theoffice.html">The Office: a guide to navigate the media</a></li>
<li><a href="primer.html">Capire il film Primer</a></li>
<li><a href="memefinance.html">MEMEFINANCE (WIP)</a></li>
<li><a href="capodanno22.html">Capodanno 2022</a></li>
<li><a href="capodanno23.html">Capodanno 2022 + 1</a></li> <li><a href="capodanno23.html">Capodanno 2022 + 1</a></li>
<li><a href="capodanno22.html">Capodanno 2022</a></li>
<li><a href="memefinance.html">MEMEFINANCE (WIP)</a></li>
<li><a href="primer.html">Capire il film Primer</a></li>
<li><a href="bsg.html">Battlestar Galactica: a guide for watching the show</a></li>
</ul> </ul>
</p> </p>
<p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p> <p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p>
<p> <p>
<br> <br>
I membri di lezzo possono leggere direttamente il sorgente org-mode degli articoli che solitamente contiene maggiori informazioni. Per fare questo basta modificare la url in: /blog/src/nomefile.org . I membri di lezzo possono leggere direttamente il sorgente org-mode degli articoli che solitamente contiene maggiori informazioni. Per fare questo basta modificare la url in: /blog/src/nomefile.org .

198
blog/src/theoffice.org Normal file
View File

@ -0,0 +1,198 @@
#+AUTHOR: bparodi
#+TITLE: The Office: a guide to navigate the media
#+options: html-style:nil html-scripts:nil date:nil created:nil
#+HTML_HEAD: <link rel="stylesheet" href="articles.css">
* Le due edizioni
Su lezzo puoi vedere due versioni di The Office:
- l'originale, trasferita da un misto dei miei bluray e da Amazon
- la versione superfan di Peacock, un altro servizio di streaming
The Office ha avuto più successo negli ultimi anni grazie allo streaming on
demand piuttosto che quando era trasmessa in TV.
Per questo motive quando Peacock è diventato l'esclusiva piattaforma di
streaming di The Office negli Stati Uniti
hanno capite che avrebbero dovuto offrire qualcosa di più per convincere alcuni fan a seguire la serie anziché
semplicemente acquistarla nelle molteplici edizioni in DVD e Bluray che ormai
sono economicissime.
Queste versioni estese degli episodi, chiamate Superfan Edits o Superfan Edition
offrono sequenze mai viste e in
alcuni casi addirittura mai trasmesse.
A prima vista, sembra un'aggiunta non particolarmente entusiasmante, ma in
realtà è un po' più interessante rispetto alla prima serie di Episodi Superfan
della terza stagione. Questo perché alcuni degli episodi estesi (chiamati a
volte montaggi del produttore) dalla terza stagione in poi sono stati
disponibili su DVD. La versione superfan aggiunge moltissimo spessore agli
episodi e rispondono ad alcune domande che i fan si sono posti per anni. Nella
prossima sezione ho copiato un articolo che parla di come la versione superfan
della terza stagione, nonchè la prima stagione ad essere sottoposta a questo
edit, arricchisca la visione della serie.
** The Office superfan episodes completely Change season 3 [SPOILER]
When Peacock first announced that it would be adding The Office to its library
with new Superfan episodes, I was as excited as anyone else. Who doesnt want an
extra deranged rant from Dwight or a “Thats what she said” joke from Michael?
What I never expected was for them to change my perception of Dunder Mifflin,
forever. The Offices extended cut episodes dont merely add depth to
Season 3. They rewrite them.
At the moment Peacocks extended episodes are only available for Season 3 of the
series. But that one season makes a great argument for why the streaming service
should keep adding these new installments. Ive only made it through six
episodes of painstakingly tracking everything new in The Offices Superfan cuts,
but already Im viewing characters I love in a different light.
These apply to big, overarching plot points. Did you ever think it was weird
that Pam (Jenna Fischer) got back together with Roy (David Denman) after going
on basically one date with another guy? In the typical cut of The Office, Pams
choice to return to Roy seems a bit sad. Its as if shes resigned herself to a
lackluster fate she knows she hates. Yet it doesnt play out that way in the
extended cut. We get to see more of Pams date with the cartoonist and her tiny
fling with that cute guy she danced with during “Diwali.” But more importantly
we get to see more of Roy and Pam. We see the breaks Roy keeps taking in the
hopes he can see the woman who broke his heart, and we see more of their quiet
flirting. Its easy to write off Roy as an unemotional jerk. But in these small
moments its clear that he and Pam really had something.
Similarly, Jims (John Krasinski) relationship with Karen (Rashida Jones) feels
like more than a rebound. When Jim first transfers to Stamford, hes pretty
insufferable. Hes constantly volunteering for more responsibility from Josh
(Charles Esten) and copying his boss, down to Joshs bike riding hobby. We see a
bit of that in the traditional cut, but in this longer version Karen
consistently berates Jim for his overeager attitude and love of calling himself
Assistant Regional Manager. Yes, that is the same gimmick Jim used to pull on
Dwight. In this way she acts more as the anti-Pam, not a quiet nice girl but an
upfront go-getter who is unafraid to call Jim out on his nonsense. And Jim
responds to that reality check.
On the flip side, as these episodes spend more time with Karen we get to see
just how cutting and borderline cruel she can be. During “Gay Witch Hunt” Karen
walks by a co-worker who is breastfeeding at her desk. In disgust Karen says,
“Put that away. No one wants to see your udder.” That more insulting version of
Karens typical snark speaks volumes. It foreshadows how she will come to handle
her eventual breakup with Jim.
Less crucial romances also gain more dimension. In “Diwali” Ryan (BJ Novak)
initially pressures his co-workers to go to the celebration because it would
make Kelly (Mindy Kaling) happy. He later bails when it becomes clear her
parents are expecting him to ask for permission to marry Kelly. Is Ryan still
scum? Absolutely. But in this version he comes across more as a clueless guy in
love who cant bring himself to take the next step. Also, did you know that
Angela (Angela Kinsey) was jealous of Kelly between Seasons 2 and 3? During the
Season 2 Christmas party, Kelly kissed Dwight (Rainn Wilson) because they were
both standing under mistletoe. Of course thats something the vicious Angela
would never forget. Yet that entire plot line and Dwights admittedly sweet
reconciliation with Angela was cut.
This re-evaluation isnt limited to the shows romantic relationships. Though
Jans (Melora Hardin) monitoring of Michaels (Steve Carell) work performance is
mentioned throughout all cuts of the season, only the Superfan edition truly
emphasizes how close Michael was to getting fired. In several episodes Jan
forces Michael to walk her through his workday on an hour-by-hour basis. During
this evaluation period we get a glimpse of what makes Michael Scott an actually
good boss. After slacking off on pretzel day, Michael suddenly bursts into the
main room in a sugar-fueled mania. Over the course of about two minutes he
spouts off several non-insane ideas about how to make the office more efficient,
including a desk reorganization and increased accountability from his
employees. He then returns to his desk to presumably make the major sale
mentioned at the end of the episode. It isnt until Season 5 and the Michael
Scott Paper Company that its revealed that Michael may be good at his job. Yet
those seeds were planted two seasons prior then cut out of the script.
And then theres the bird funeral. Pams obsession over organizing a funeral for
a dead bird in “Grief Counseling” has always given me pause. I chalked her
interest up to sheer boredom, though that never seemed quite right. Now I
understand what I was missing. While reflecting on the death of Ed Truck Pam
tells the camera, “Michael once told me that Home Alone is the saddest movie
ever. When I asked him why he said, Because the whole family forgets the kid at
home. There is nothing funny about that!'”
* List of episodes with alternate cuts
Airing runtime includes commercials.
| Episode | Title | Description | Media |
|-------------+------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------|
| S02 E22 | "Casino Night" | Aired on May 11, 2006 as a supersized episode. It airs in syndication as a half-hour episode. | Short cut: Syndication; Supersized cut (28:20): DVD, Netflix, iTunes |
| S03 E07 | "Branch Closing" | Aired on November 9, 2006. Later that night, a Producer's Cut of the episode was released on NBC.com. | Original cut: Syndication; Producer's Cut (30:14): DVD, Netflix, iTunes |
| S03 E08 | "The Merger" | Aired on November 16, 2006 as a supersized episode. It airs in syndication as a half-hour episode. A subplot involving a Staples paper shredder was removed from future releases. | Short cut: Syndication; Supersized cut (29:50): DVD, Netflix; Original Supersized cut with Staples plot (30:43): iTunes |
| S03 E10, 11 | "A Benihana Christmas" | First aired on December 14, 2006, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:51): DVD, Netflix, iTunes; 2-Part cut: Syndication |
| S03 E12, 13 | "Traveling Salesmen"; "The Return" | "Traveling Salesmen" first aired on January 11, 2007. "The Return" first aired on January 18, 2007. Later that night, a Producer's Cut of "The Return" was released on NBC.com. On March 15, 2007, NBC aired "Traveling Salesmen" and "The Return" as a Newpeat which included additional footage. | Original cut (21:26): Syndication, Netflix, iTunes; "The Return" Producer's Cut (28:25): Netflix, iTunes; "Traveling Salesmen" + "The Return" Newpeat: DVD |
| S03 E19 | "The Negotiation" | Aired on April 5, 2007, as a supersized episode. It airs in syndication as a half-hour episode. | Short cut: Syndication; Supersized cut (29:28): DVD, Netflix, iTunes |
| S03 E22 | "Women's Appreciation" | Aired on May 3, 2007, as a supersized episode. On August 30, 2007, NBC aired the episode as a regular half-hour episode. This alternate cut both cut material and included new scenes. | Short (new) cut: Syndication; Supersized cut (28:53): DVD, Netflix, iTunes |
| S03 E23 | "Beach Games" | Aired on May 10, 2007 as a supersized episode. It airs in syndication as a half-hour episode. | Short cut: Syndication; Supersized cut (27:53): DVD, Netflix, iTunes |
| S03 E24, 25 | "The Job" | Aired on May 17, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (42:24): DVD, Netflix, iTunes; 2-Part cut: Syndication |
| S04 E01, 02 | "Fun Run" | Aired on September 27, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:58): DVD, Netflix, iTunes; 2-Part cut: Syndication |
| S04 E03, 04 | "Dunder Mifflin Infinity" | Aired on October 4, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication |
| S04 E05, 06 | "Launch Party" | Aired on October 11, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication |
| S04 E07, 08 | "Money" | Aired on October 18, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:58): DVD, Netflix, iTunes; 2-Part cut: Syndication |
| S04 E18, 19 | "Goodbye, Toby" | Aired on May 15, 2008, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication |
| S05 E01, 02 | "Weight Loss" | Aired on September 25, 2008, as a one-hour episode. It airs in syndication and on Netflix in two parts. | Hour long cut (42:06): DVD, iTunes; 2-Part cut: Syndication, Netflix |
| S05 E09 | "Frame Toby" | Aired on November 20, 2008. On November 25, 2008, a Producer's Cut of the episode was released on NBC.com. | Original cut (21:16): Syndication, Netflix, iTunes; Producer's Cut (25:49): DVD |
| S05 E14, 15 | "Stress Relief" | Aired on February 1, 2009, as a one-hour episode. It airs in syndication and on Netflix in two parts. | Hour long cut (41:29): DVD, iTunes; 2-Part cut: Syndication, Netflix |
| S06 E04, 05 | "Niagara" | Aired on October 8, 2009, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts. | Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes |
| S06 E08 | "Koi Pond" | Aired on October 29, 2009. The Halloween cold open was removed from future releases. | Short cut: Syndication, DVD, Netflix, iTunes |
| S06 E13 | "Secret Santa" | Aired on December 10, 2009. On December 15, 2009, a Producer's Cut was released on NBC.com. | Producer's Cut (29:43): Season 6 DVD, "Secret Santa Pack" DVD |
| S06 E15 | "Sabre" | Aired on February 4, 2010. On September 7, 2010, Target stores included a Producer's Cut of the episode on an exclusive DVD as part of the Season 6 DVD set. | Original cut (22:07): DVD, Syndication, Netflix, iTunes; Producer's Cut (30:30): Target Exclusive Disc |
| S06 E17, 18 | "The Delivery" | Aired on March 4, 2010, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts. | Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes |
| S06 E26 | "Whistleblower" | Aired on May 20, 2010. On September 7, 2010, Target stores included a Producer's Cut of the episode on an exclusive DVD as part of the Season 6 DVD set. | Original cut (22:08): DVD, Syndication, Netflix, iTunes; Producer's Cut (28:17): Target Exclusive Disc |
| S07 E11, 12 | "Classy Christmas" | Aired on December 9, 2010, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts. | Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes |
| S07 E20 | "Training Day" | Aired on April 14, 2011. A Producer's Cut was released on the Season 7 DVD on September 6, 2011. | Producer's Cut (34:10): DVD |
| S07 E22 | "Goodbye, Michael" | Aired on April 28, 2011, as a supersized episode. On May 26, 2011, NBC aired the episode as a 2-part extended Producer's Cut. | Supersized cut (36:14): DVD, Netflix, iTunes; 2-part Producer's Cut: Syndication |
| S07 E25, 26 | "Search Committee" | Aired on May 19, 2011, as a one-hour episode. A Producer's Cut was released on the Season 7 DVD on September 6, 2011. | Original cut: DVD; 2-Part cut: Syndication, Netflix, iTunes; Producer's Cut (55:25) |
| S08 E21 | "Angry Andy" | Aired on April 19, 2012. A Producer's Cut was released on the Season 8 DVD on September 4, 2012. | Original cut: DVD, Syndication, Netflix, iTunes; Producer's Cut (33:20): DVD |
| S08 E22 | "Fundraiser" | Aired on April 26, 2012. A Producer's Cut was released on the Season 8 DVD on September 4, 2012. | Original cut: DVD, Syndication, Netflix, iTunes; Producer's Cut (25:50): DVD |
| S09 E16 | "Moving On" | Aired on February 14, 2013, as a one-hour supersized episode. It airs in syndication and on iTunes in two parts. | 2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix |
| S09 E21 | "Livin' the Dream" | Aired on May 2, 2013, as a one-hour supersized episode. It airs in syndication and on iTunes in two parts. | 2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix |
| S09 E22, 23 | "A.A.R.M." | Aired on May 9, 2013, as a one-hour episode. It airs in syndication and on iTunes in two parts. | 2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix |
| S09 E24, 25 | "Finale" | Aired on May 16, 2013, as a 75-minute supersized episode. It airs in syndication and on iTunes in two parts. | 2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix |
Di seguito una tabella che spiega dove poter reperire gli episodi. Dove non
specificato, il rip già contiene la versione più esaustiva.
| Episodio | Path |
|------------+---------------------------------------------------------------------------|
| S03E07 | Specials/TV Recordings/ |
| S03E19 | Specials/TV Recordings/ |
| S06E08 | Specials/Season 06/Deleted Scenes/S06E08 Koi Pond Halloween Cold Open.mkv |
| S06E15 | Il superfan edit contiene (probabilmente) le stesse scene ed altro |
| S06E17, 18 | Il superfan edit contiene (probabilmente) le stesse scene ed altro |
| S06E26 | Il superfan edit contiene (probabilmente) le stesse scene ed altro |
* Additional media
This is a list of additional media with indications of when I think it is the
most appropriate time to watch it. I compiled this list a while after watching
the series so the informations may not be 100% accurate. The specials folder
includes also some deleted scenes, bloopers and exclusive interviews and
recordings of the cast and the producers.
| # | Title | When to watch |
|----+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------|
| 1 | The Accountants | At the end of S01 |
| 2 | Fake PSA | While watching S02 |
| 3 | Faces of Scranton | After S02E16 |
| 4 | Steve on Steve | Near or after the end of S02 |
| 5 | Kevin Cooks Stuff in The Office | During the first episodes of S03 |
| 6 | Excerpt From The 58th Annual Primetime Emmy Awards.mkv | During S03 |
| 7 | Excerpts From The 2006 Nbc Primetime Preview Hosted By "The Office" Cast | During S03 |
| 8 | Toby Wraparounds.mkv | During S03 |
| 9 | Dwight Schrute Music Video | Near the end of S03 |
| 10 | Lazy Scranton video | After S03E8 |
| 11 | Michael's Ad | After the relevant episode |
| 12 | Rabies - The More You Know | After the relevant episode |
| 13 | Summer Vacation Promo | At the end of S04 |
| 14 | The Promos | While watching S05 |
| 15 | Kevin's Bank Loan | While watching S05 |
| 16 | The Outburst | After the episode where Oscar is enraged |
| 17 | Welcome to Sabre | After the Sabre acquisition |
| 18 | The Podcast | After Gabe has been introduced for a couple episodes |
| 19 | Canada Games by The Office | After they talk about the Olympics or at the end of S06 |
| 20 | Blackmail | While watching S06 |
| 21 | Subtle Sexuality | While watching S06 |
| 22 | The Mentor | While watching S06 or beginnings of S07 |
| 23 | The 3rd Floor | While watching the first episodes of SS07 |
| 24 | Girl Next Door | While watching the first episodes of SS07 |
| 25 | The Office Promos - XLVI Football Championship | While watching S08 |
| 26 | Threat Level Midnight The Movie | Whenever you want: either after they talk about this in the series or during S08 or S09 ;) |
| 27 | Autotune Andy | After the relevant episode |
| 28 | The Matrix Cold Open | Near the end of S09 |
* Suggested reading
- https://www.ribbonfarm.com/the-gervais-principle/: The Gervais principle, a
very interting analysis of the workplace dynamics while watching the show
- https://www.ribbonfarm.com/2009/12/13/random-promotions-and-the-gervais-principle/:
small reflections about randomness at work

700
blog/theoffice.html Normal file
View File

@ -0,0 +1,700 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2023-06-23 Fri 11:51 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>The Office: a guide to navigate the media</title>
<meta name="author" content="bparodi" />
<meta name="generator" content="Org Mode" />
<link rel="stylesheet" href="articles.css">
</head>
<body>
<div id="content" class="content">
<h1 class="title">The Office: a guide to navigate the media</h1>
<div id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#orgaa84a9b">1. Le due edizioni</a>
<ul>
<li><a href="#orgd8a0ead">1.1. The Office superfan episodes completely Change season 3 [SPOILER]</a></li>
</ul>
</li>
<li><a href="#orgf679471">2. List of episodes with alternate cuts</a></li>
<li><a href="#orgd58f6d5">3. Additional media</a></li>
<li><a href="#orga207568">4. Suggested reading</a></li>
</ul>
</div>
</div>
<div id="outline-container-orgaa84a9b" class="outline-2">
<h2 id="orgaa84a9b"><span class="section-number-2">1.</span> Le due edizioni</h2>
<div class="outline-text-2" id="text-1">
<p>
Su lezzo puoi vedere due versioni di The Office:
</p>
<ul class="org-ul">
<li>l'originale, trasferita da un misto dei miei bluray e da Amazon</li>
<li>la versione superfan di Peacock, un altro servizio di streaming</li>
</ul>
<p>
The Office ha avuto più successo negli ultimi anni grazie allo streaming on
demand piuttosto che quando era trasmessa in TV.
</p>
<p>
Per questo motive quando Peacock è diventato l'esclusiva piattaforma di
streaming di The Office negli Stati Uniti
hanno capite che avrebbero dovuto offrire qualcosa di più per convincere alcuni fan a seguire la serie anziché
semplicemente acquistarla nelle molteplici edizioni in DVD e Bluray che ormai
sono economicissime.
Queste versioni estese degli episodi, chiamate Superfan Edits o Superfan Edition
offrono sequenze mai viste e in
alcuni casi addirittura mai trasmesse.
</p>
<p>
A prima vista, sembra un'aggiunta non particolarmente entusiasmante, ma in
realtà è un po' più interessante rispetto alla prima serie di Episodi Superfan
della terza stagione. Questo perché alcuni degli episodi estesi (chiamati a
volte montaggi del produttore) dalla terza stagione in poi sono stati
disponibili su DVD. La versione superfan aggiunge moltissimo spessore agli
episodi e rispondono ad alcune domande che i fan si sono posti per anni. Nella
prossima sezione ho copiato un articolo che parla di come la versione superfan
della terza stagione, nonchè la prima stagione ad essere sottoposta a questo
edit, arricchisca la visione della serie.
</p>
</div>
<div id="outline-container-orgd8a0ead" class="outline-3">
<h3 id="orgd8a0ead"><span class="section-number-3">1.1.</span> The Office superfan episodes completely Change season 3 [SPOILER]</h3>
<div class="outline-text-3" id="text-1-1">
<p>
When Peacock first announced that it would be adding The Office to its library
with new Superfan episodes, I was as excited as anyone else. Who doesnt want an
extra deranged rant from Dwight or a “Thats what she said” joke from Michael?
What I never expected was for them to change my perception of Dunder Mifflin,
forever. The Offices extended cut episodes dont merely add depth to
Season 3. They rewrite them.
</p>
<p>
At the moment Peacocks extended episodes are only available for Season 3 of the
series. But that one season makes a great argument for why the streaming service
should keep adding these new installments. Ive only made it through six
episodes of painstakingly tracking everything new in The Offices Superfan cuts,
but already Im viewing characters I love in a different light.
</p>
<p>
These apply to big, overarching plot points. Did you ever think it was weird
that Pam (Jenna Fischer) got back together with Roy (David Denman) after going
on basically one date with another guy? In the typical cut of The Office, Pams
choice to return to Roy seems a bit sad. Its as if shes resigned herself to a
lackluster fate she knows she hates. Yet it doesnt play out that way in the
extended cut. We get to see more of Pams date with the cartoonist and her tiny
fling with that cute guy she danced with during “Diwali.” But more importantly
we get to see more of Roy and Pam. We see the breaks Roy keeps taking in the
hopes he can see the woman who broke his heart, and we see more of their quiet
flirting. Its easy to write off Roy as an unemotional jerk. But in these small
moments its clear that he and Pam really had something.
</p>
<p>
Similarly, Jims (John Krasinski) relationship with Karen (Rashida Jones) feels
like more than a rebound. When Jim first transfers to Stamford, hes pretty
insufferable. Hes constantly volunteering for more responsibility from Josh
(Charles Esten) and copying his boss, down to Joshs bike riding hobby. We see a
bit of that in the traditional cut, but in this longer version Karen
consistently berates Jim for his overeager attitude and love of calling himself
Assistant Regional Manager. Yes, that is the same gimmick Jim used to pull on
Dwight. In this way she acts more as the anti-Pam, not a quiet nice girl but an
upfront go-getter who is unafraid to call Jim out on his nonsense. And Jim
responds to that reality check.
</p>
<p>
On the flip side, as these episodes spend more time with Karen we get to see
just how cutting and borderline cruel she can be. During “Gay Witch Hunt” Karen
walks by a co-worker who is breastfeeding at her desk. In disgust Karen says,
“Put that away. No one wants to see your udder.” That more insulting version of
Karens typical snark speaks volumes. It foreshadows how she will come to handle
her eventual breakup with Jim.
</p>
<p>
Less crucial romances also gain more dimension. In “Diwali” Ryan (BJ Novak)
initially pressures his co-workers to go to the celebration because it would
make Kelly (Mindy Kaling) happy. He later bails when it becomes clear her
parents are expecting him to ask for permission to marry Kelly. Is Ryan still
scum? Absolutely. But in this version he comes across more as a clueless guy in
love who cant bring himself to take the next step. Also, did you know that
Angela (Angela Kinsey) was jealous of Kelly between Seasons 2 and 3? During the
Season 2 Christmas party, Kelly kissed Dwight (Rainn Wilson) because they were
both standing under mistletoe. Of course thats something the vicious Angela
would never forget. Yet that entire plot line and Dwights admittedly sweet
reconciliation with Angela was cut.
</p>
<p>
This re-evaluation isnt limited to the shows romantic relationships. Though
Jans (Melora Hardin) monitoring of Michaels (Steve Carell) work performance is
mentioned throughout all cuts of the season, only the Superfan edition truly
emphasizes how close Michael was to getting fired. In several episodes Jan
forces Michael to walk her through his workday on an hour-by-hour basis. During
this evaluation period we get a glimpse of what makes Michael Scott an actually
good boss. After slacking off on pretzel day, Michael suddenly bursts into the
main room in a sugar-fueled mania. Over the course of about two minutes he
spouts off several non-insane ideas about how to make the office more efficient,
including a desk reorganization and increased accountability from his
employees. He then returns to his desk to presumably make the major sale
mentioned at the end of the episode. It isnt until Season 5 and the Michael
Scott Paper Company that its revealed that Michael may be good at his job. Yet
those seeds were planted two seasons prior then cut out of the script.
</p>
<p>
And then theres the bird funeral. Pams obsession over organizing a funeral for
a dead bird in “Grief Counseling” has always given me pause. I chalked her
interest up to sheer boredom, though that never seemed quite right. Now I
understand what I was missing. While reflecting on the death of Ed Truck Pam
tells the camera, “Michael once told me that Home Alone is the saddest movie
ever. When I asked him why he said, Because the whole family forgets the kid at
home. There is nothing funny about that!'”
</p>
</div>
</div>
</div>
<div id="outline-container-orgf679471" class="outline-2">
<h2 id="orgf679471"><span class="section-number-2">2.</span> List of episodes with alternate cuts</h2>
<div class="outline-text-2" id="text-2">
<p>
Airing runtime includes commercials.
</p>
<table border="0" cellspacing="0" cellpadding="6" rules="none" frame="none">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Episode</th>
<th scope="col" class="org-left">Title</th>
<th scope="col" class="org-left">Description</th>
<th scope="col" class="org-left">Media</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">S02 E22</td>
<td class="org-left">"Casino Night"</td>
<td class="org-left">Aired on May 11, 2006 as a supersized episode. It airs in syndication as a half-hour episode.</td>
<td class="org-left">Short cut: Syndication; Supersized cut (28:20): DVD, Netflix, iTunes</td>
</tr>
<tr>
<td class="org-left">S03 E07</td>
<td class="org-left">"Branch Closing"</td>
<td class="org-left">Aired on November 9, 2006. Later that night, a Producer's Cut of the episode was released on NBC.com.</td>
<td class="org-left">Original cut: Syndication; Producer's Cut (30:14): DVD, Netflix, iTunes</td>
</tr>
<tr>
<td class="org-left">S03 E08</td>
<td class="org-left">"The Merger"</td>
<td class="org-left">Aired on November 16, 2006 as a supersized episode. It airs in syndication as a half-hour episode. A subplot involving a Staples paper shredder was removed from future releases.</td>
<td class="org-left">Short cut: Syndication; Supersized cut (29:50): DVD, Netflix; Original Supersized cut with Staples plot (30:43): iTunes</td>
</tr>
<tr>
<td class="org-left">S03 E10, 11</td>
<td class="org-left">"A Benihana Christmas"</td>
<td class="org-left">First aired on December 14, 2006, as a one-hour episode. It airs in syndication in two parts.</td>
<td class="org-left">Hour long cut (41:51): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
</tr>
<tr>
<td class="org-left">S03 E12, 13</td>
<td class="org-left">"Traveling Salesmen"; "The Return"</td>
<td class="org-left">"Traveling Salesmen" first aired on January 11, 2007. "The Return" first aired on January 18, 2007. Later that night, a Producer's Cut of "The Return" was released on NBC.com. On March 15, 2007, NBC aired "Traveling Salesmen" and "The Return" as a Newpeat which included additional footage.</td>
<td class="org-left">Original cut (21:26): Syndication, Netflix, iTunes; "The Return" Producer's Cut (28:25): Netflix, iTunes; "Traveling Salesmen" + "The Return" Newpeat: DVD</td>
</tr>
<tr>
<td class="org-left">S03 E19</td>
<td class="org-left">"The Negotiation"</td>
<td class="org-left">Aired on April 5, 2007, as a supersized episode. It airs in syndication as a half-hour episode.</td>
<td class="org-left">Short cut: Syndication; Supersized cut (29:28): DVD, Netflix, iTunes</td>
</tr>
<tr>
<td class="org-left">S03 E22</td>
<td class="org-left">"Women's Appreciation"</td>
<td class="org-left">Aired on May 3, 2007, as a supersized episode. On August 30, 2007, NBC aired the episode as a regular half-hour episode. This alternate cut both cut material and included new scenes.</td>
<td class="org-left">Short (new) cut: Syndication; Supersized cut (28:53): DVD, Netflix, iTunes</td>
</tr>
<tr>
<td class="org-left">S03 E23</td>
<td class="org-left">"Beach Games"</td>
<td class="org-left">Aired on May 10, 2007 as a supersized episode. It airs in syndication as a half-hour episode.</td>
<td class="org-left">Short cut: Syndication; Supersized cut (27:53): DVD, Netflix, iTunes</td>
</tr>
<tr>
<td class="org-left">S03 E24, 25</td>
<td class="org-left">"The Job"</td>
<td class="org-left">Aired on May 17, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
<td class="org-left">Hour long cut (42:24): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
</tr>
<tr>
<td class="org-left">S04 E01, 02</td>
<td class="org-left">"Fun Run"</td>
<td class="org-left">Aired on September 27, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
<td class="org-left">Hour long cut (41:58): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
</tr>
<tr>
<td class="org-left">S04 E03, 04</td>
<td class="org-left">"Dunder Mifflin Infinity"</td>
<td class="org-left">Aired on October 4, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
<td class="org-left">Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
</tr>
<tr>
<td class="org-left">S04 E05, 06</td>
<td class="org-left">"Launch Party"</td>
<td class="org-left">Aired on October 11, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
<td class="org-left">Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
</tr>
<tr>
<td class="org-left">S04 E07, 08</td>
<td class="org-left">"Money"</td>
<td class="org-left">Aired on October 18, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
<td class="org-left">Hour long cut (41:58): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
</tr>
<tr>
<td class="org-left">S04 E18, 19</td>
<td class="org-left">"Goodbye, Toby"</td>
<td class="org-left">Aired on May 15, 2008, as a one-hour episode. It airs in syndication in two parts.</td>
<td class="org-left">Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
</tr>
<tr>
<td class="org-left">S05 E01, 02</td>
<td class="org-left">"Weight Loss"</td>
<td class="org-left">Aired on September 25, 2008, as a one-hour episode. It airs in syndication and on Netflix in two parts.</td>
<td class="org-left">Hour long cut (42:06): DVD, iTunes; 2-Part cut: Syndication, Netflix</td>
</tr>
<tr>
<td class="org-left">S05 E09</td>
<td class="org-left">"Frame Toby"</td>
<td class="org-left">Aired on November 20, 2008. On November 25, 2008, a Producer's Cut of the episode was released on NBC.com.</td>
<td class="org-left">Original cut (21:16): Syndication, Netflix, iTunes; Producer's Cut (25:49): DVD</td>
</tr>
<tr>
<td class="org-left">S05 E14, 15</td>
<td class="org-left">"Stress Relief"</td>
<td class="org-left">Aired on February 1, 2009, as a one-hour episode. It airs in syndication and on Netflix in two parts.</td>
<td class="org-left">Hour long cut (41:29): DVD, iTunes; 2-Part cut: Syndication, Netflix</td>
</tr>
<tr>
<td class="org-left">S06 E04, 05</td>
<td class="org-left">"Niagara"</td>
<td class="org-left">Aired on October 8, 2009, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts.</td>
<td class="org-left">Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes</td>
</tr>
<tr>
<td class="org-left">S06 E08</td>
<td class="org-left">"Koi Pond"</td>
<td class="org-left">Aired on October 29, 2009. The Halloween cold open was removed from future releases.</td>
<td class="org-left">Short cut: Syndication, DVD, Netflix, iTunes</td>
</tr>
<tr>
<td class="org-left">S06 E13</td>
<td class="org-left">"Secret Santa"</td>
<td class="org-left">Aired on December 10, 2009. On December 15, 2009, a Producer's Cut was released on NBC.com.</td>
<td class="org-left">Producer's Cut (29:43): Season 6 DVD, "Secret Santa Pack" DVD</td>
</tr>
<tr>
<td class="org-left">S06 E15</td>
<td class="org-left">"Sabre"</td>
<td class="org-left">Aired on February 4, 2010. On September 7, 2010, Target stores included a Producer's Cut of the episode on an exclusive DVD as part of the Season 6 DVD set.</td>
<td class="org-left">Original cut (22:07): DVD, Syndication, Netflix, iTunes; Producer's Cut (30:30): Target Exclusive Disc</td>
</tr>
<tr>
<td class="org-left">S06 E17, 18</td>
<td class="org-left">"The Delivery"</td>
<td class="org-left">Aired on March 4, 2010, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts.</td>
<td class="org-left">Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes</td>
</tr>
<tr>
<td class="org-left">S06 E26</td>
<td class="org-left">"Whistleblower"</td>
<td class="org-left">Aired on May 20, 2010. On September 7, 2010, Target stores included a Producer's Cut of the episode on an exclusive DVD as part of the Season 6 DVD set.</td>
<td class="org-left">Original cut (22:08): DVD, Syndication, Netflix, iTunes; Producer's Cut (28:17): Target Exclusive Disc</td>
</tr>
<tr>
<td class="org-left">S07 E11, 12</td>
<td class="org-left">"Classy Christmas"</td>
<td class="org-left">Aired on December 9, 2010, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts.</td>
<td class="org-left">Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes</td>
</tr>
<tr>
<td class="org-left">S07 E20</td>
<td class="org-left">"Training Day"</td>
<td class="org-left">Aired on April 14, 2011. A Producer's Cut was released on the Season 7 DVD on September 6, 2011.</td>
<td class="org-left">Producer's Cut (34:10): DVD</td>
</tr>
<tr>
<td class="org-left">S07 E22</td>
<td class="org-left">"Goodbye, Michael"</td>
<td class="org-left">Aired on April 28, 2011, as a supersized episode. On May 26, 2011, NBC aired the episode as a 2-part extended Producer's Cut.</td>
<td class="org-left">Supersized cut (36:14): DVD, Netflix, iTunes; 2-part Producer's Cut: Syndication</td>
</tr>
<tr>
<td class="org-left">S07 E25, 26</td>
<td class="org-left">"Search Committee"</td>
<td class="org-left">Aired on May 19, 2011, as a one-hour episode. A Producer's Cut was released on the Season 7 DVD on September 6, 2011.</td>
<td class="org-left">Original cut: DVD; 2-Part cut: Syndication, Netflix, iTunes; Producer's Cut (55:25)</td>
</tr>
<tr>
<td class="org-left">S08 E21</td>
<td class="org-left">"Angry Andy"</td>
<td class="org-left">Aired on April 19, 2012. A Producer's Cut was released on the Season 8 DVD on September 4, 2012.</td>
<td class="org-left">Original cut: DVD, Syndication, Netflix, iTunes; Producer's Cut (33:20): DVD</td>
</tr>
<tr>
<td class="org-left">S08 E22</td>
<td class="org-left">"Fundraiser"</td>
<td class="org-left">Aired on April 26, 2012. A Producer's Cut was released on the Season 8 DVD on September 4, 2012.</td>
<td class="org-left">Original cut: DVD, Syndication, Netflix, iTunes; Producer's Cut (25:50): DVD</td>
</tr>
<tr>
<td class="org-left">S09 E16</td>
<td class="org-left">"Moving On"</td>
<td class="org-left">Aired on February 14, 2013, as a one-hour supersized episode. It airs in syndication and on iTunes in two parts.</td>
<td class="org-left">2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix</td>
</tr>
<tr>
<td class="org-left">S09 E21</td>
<td class="org-left">"Livin' the Dream"</td>
<td class="org-left">Aired on May 2, 2013, as a one-hour supersized episode. It airs in syndication and on iTunes in two parts.</td>
<td class="org-left">2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix</td>
</tr>
<tr>
<td class="org-left">S09 E22, 23</td>
<td class="org-left">"A.A.R.M."</td>
<td class="org-left">Aired on May 9, 2013, as a one-hour episode. It airs in syndication and on iTunes in two parts.</td>
<td class="org-left">2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix</td>
</tr>
<tr>
<td class="org-left">S09 E24, 25</td>
<td class="org-left">"Finale"</td>
<td class="org-left">Aired on May 16, 2013, as a 75-minute supersized episode. It airs in syndication and on iTunes in two parts.</td>
<td class="org-left">2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix</td>
</tr>
</tbody>
</table>
<p>
Di seguito una tabella che spiega dove poter reperire gli episodi. Dove non
specificato, il rip già contiene la versione più esaustiva.
</p>
<table border="0" cellspacing="0" cellpadding="6" rules="none" frame="none">
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Episodio</th>
<th scope="col" class="org-left">Path</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">S03E07</td>
<td class="org-left">Specials/TV Recordings/</td>
</tr>
<tr>
<td class="org-left">S03E19</td>
<td class="org-left">Specials/TV Recordings/</td>
</tr>
<tr>
<td class="org-left">S06E08</td>
<td class="org-left">Specials/Season 06/Deleted Scenes/S06E08 Koi Pond Halloween Cold Open.mkv</td>
</tr>
<tr>
<td class="org-left">S06E15</td>
<td class="org-left">Il superfan edit contiene (probabilmente) le stesse scene ed altro</td>
</tr>
<tr>
<td class="org-left">S06E17, 18</td>
<td class="org-left">Il superfan edit contiene (probabilmente) le stesse scene ed altro</td>
</tr>
<tr>
<td class="org-left">S06E26</td>
<td class="org-left">Il superfan edit contiene (probabilmente) le stesse scene ed altro</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-orgd58f6d5" class="outline-2">
<h2 id="orgd58f6d5"><span class="section-number-2">3.</span> Additional media</h2>
<div class="outline-text-2" id="text-3">
<p>
This is a list of additional media with indications of when I think it is the
most appropriate time to watch it. I compiled this list a while after watching
the series so the informations may not be 100% accurate. The specials folder
includes also some deleted scenes, bloopers and exclusive interviews and
recordings of the cast and the producers.
</p>
<table border="0" cellspacing="0" cellpadding="6" rules="none" frame="none">
<colgroup>
<col class="org-right" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">#</th>
<th scope="col" class="org-left">Title</th>
<th scope="col" class="org-left">When to watch</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1</td>
<td class="org-left">The Accountants</td>
<td class="org-left">At the end of S01</td>
</tr>
<tr>
<td class="org-right">2</td>
<td class="org-left">Fake PSA</td>
<td class="org-left">While watching S02</td>
</tr>
<tr>
<td class="org-right">3</td>
<td class="org-left">Faces of Scranton</td>
<td class="org-left">After S02E16</td>
</tr>
<tr>
<td class="org-right">4</td>
<td class="org-left">Steve on Steve</td>
<td class="org-left">Near or after the end of S02</td>
</tr>
<tr>
<td class="org-right">5</td>
<td class="org-left">Kevin Cooks Stuff in The Office</td>
<td class="org-left">During the first episodes of S03</td>
</tr>
<tr>
<td class="org-right">6</td>
<td class="org-left">Excerpt From The 58th Annual Primetime Emmy Awards.mkv</td>
<td class="org-left">During S03</td>
</tr>
<tr>
<td class="org-right">7</td>
<td class="org-left">Excerpts From The 2006 Nbc Primetime Preview Hosted By "The Office" Cast</td>
<td class="org-left">During S03</td>
</tr>
<tr>
<td class="org-right">8</td>
<td class="org-left">Toby Wraparounds.mkv</td>
<td class="org-left">During S03</td>
</tr>
<tr>
<td class="org-right">9</td>
<td class="org-left">Dwight Schrute Music Video</td>
<td class="org-left">Near the end of S03</td>
</tr>
<tr>
<td class="org-right">10</td>
<td class="org-left">Lazy Scranton video</td>
<td class="org-left">After S03E8</td>
</tr>
<tr>
<td class="org-right">11</td>
<td class="org-left">Michael's Ad</td>
<td class="org-left">After the relevant episode</td>
</tr>
<tr>
<td class="org-right">12</td>
<td class="org-left">Rabies - The More You Know</td>
<td class="org-left">After the relevant episode</td>
</tr>
<tr>
<td class="org-right">13</td>
<td class="org-left">Summer Vacation Promo</td>
<td class="org-left">At the end of S04</td>
</tr>
<tr>
<td class="org-right">14</td>
<td class="org-left">The Promos</td>
<td class="org-left">While watching S05</td>
</tr>
<tr>
<td class="org-right">15</td>
<td class="org-left">Kevin's Bank Loan</td>
<td class="org-left">While watching S05</td>
</tr>
<tr>
<td class="org-right">16</td>
<td class="org-left">The Outburst</td>
<td class="org-left">After the episode where Oscar is enraged</td>
</tr>
<tr>
<td class="org-right">17</td>
<td class="org-left">Welcome to Sabre</td>
<td class="org-left">After the Sabre acquisition</td>
</tr>
<tr>
<td class="org-right">18</td>
<td class="org-left">The Podcast</td>
<td class="org-left">After Gabe has been introduced for a couple episodes</td>
</tr>
<tr>
<td class="org-right">19</td>
<td class="org-left">Canada Games by The Office</td>
<td class="org-left">After they talk about the Olympics or at the end of S06</td>
</tr>
<tr>
<td class="org-right">20</td>
<td class="org-left">Blackmail</td>
<td class="org-left">While watching S06</td>
</tr>
<tr>
<td class="org-right">21</td>
<td class="org-left">Subtle Sexuality</td>
<td class="org-left">While watching S06</td>
</tr>
<tr>
<td class="org-right">22</td>
<td class="org-left">The Mentor</td>
<td class="org-left">While watching S06 or beginnings of S07</td>
</tr>
<tr>
<td class="org-right">23</td>
<td class="org-left">The 3rd Floor</td>
<td class="org-left">While watching the first episodes of SS07</td>
</tr>
<tr>
<td class="org-right">24</td>
<td class="org-left">Girl Next Door</td>
<td class="org-left">While watching the first episodes of SS07</td>
</tr>
<tr>
<td class="org-right">25</td>
<td class="org-left">The Office Promos - XLVI Football Championship</td>
<td class="org-left">While watching S08</td>
</tr>
<tr>
<td class="org-right">26</td>
<td class="org-left">Threat Level Midnight The Movie</td>
<td class="org-left">Whenever you want: either after they talk about this in the series or during S08 or S09 ;)</td>
</tr>
<tr>
<td class="org-right">27</td>
<td class="org-left">Autotune Andy</td>
<td class="org-left">After the relevant episode</td>
</tr>
<tr>
<td class="org-right">28</td>
<td class="org-left">The Matrix Cold Open</td>
<td class="org-left">Near the end of S09</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-orga207568" class="outline-2">
<h2 id="orga207568"><span class="section-number-2">4.</span> Suggested reading</h2>
<div class="outline-text-2" id="text-4">
<ul class="org-ul">
<li><a href="https://www.ribbonfarm.com/the-gervais-principle/">https://www.ribbonfarm.com/the-gervais-principle/</a>: The Gervais principle, a
very interting analysis of the workplace dynamics while watching the show</li>
<li><a href="https://www.ribbonfarm.com/2009/12/13/random-promotions-and-the-gervais-principle/">https://www.ribbonfarm.com/2009/12/13/random-promotions-and-the-gervais-principle/</a>:
small reflections about randomness at work</li>
</ul>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: bparodi</p>
<p class="date">Created: 2023-06-23 Fri 11:51</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>

17
bocciofila/TweenMax.min.js vendored Normal file

File diff suppressed because one or more lines are too long

BIN
bocciofila/arrow-small.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
bocciofila/arrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
bocciofila/audiovideo.webm Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.elementor-kit-517{--e-global-color-primary:#6ec1e4;--e-global-color-secondary:#54595f;--e-global-color-text:#7a7a7a;--e-global-color-accent:#61ce70;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-widget:not(:last-child){margin-bottom:20px}{}h1.entry-title{display:var(--page-title-display)}@media(max-width:1024px){.elementor-section.elementor-section-boxed>.elementor-container{max-width:1024px}}@media(max-width:767px){.elementor-section.elementor-section-boxed>.elementor-container{max-width:767px}}

View File

@ -0,0 +1,210 @@
function Winwheel(options,drawWheel)
{defaultOptions={'canvasId':'canvas','centerX':null,'centerY':null,'outerRadius':null,'innerRadius':0,'numSegments':1,'drawMode':'code','rotationAngle':0,'textFontFamily':'Arial','textFontSize':20,'textFontWeight':'bold','textOrientation':'horizontal','textAlignment':'center','textDirection':'normal','textMargin':null,'textFillStyle':'black','textStrokeStyle':null,'textLineWidth':1,'fillStyle':'silver','strokeStyle':'black','lineWidth':1,'clearTheCanvas':true,'imageOverlay':false,'drawText':true,'pointerAngle':0,'wheelImage':null,'imageDirection':'N','responsive':false,'scaleFactor':1,};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}
if(options!=null){for(let key in options){if(typeof(this[key])==='undefined'){this[key]=options[key];}}}
if(this.canvasId){this.canvas=document.getElementById(this.canvasId);if(this.canvas){if(this.centerX==null){this.centerX=this.canvas.width/2;}
if(this.centerY==null){this.centerY=this.canvas.height/2;}
if(this.outerRadius==null){if(this.canvas.width<this.canvas.height){this.outerRadius=(this.canvas.width/2)-this.lineWidth;}else{this.outerRadius=(this.canvas.height/2)-this.lineWidth;}}
this.ctx=this.canvas.getContext('2d');}else{this.canvas=null;this.ctx=null;}}else{this.canvas=null;this.ctx=null;}
this.segments=new Array(null);for(let x=1;x<=this.numSegments;x++){if((options!=null)&&(options['segments'])&&(typeof(options['segments'][x-1])!=='undefined')){this.segments[x]=new Segment(options['segments'][x-1]);}else{this.segments[x]=new Segment();}}
this.updateSegmentSizes();if(this.textMargin===null){this.textMargin=(this.textFontSize/1.7);}
if((options!=null)&&(options['animation'])&&(typeof(options['animation'])!=='undefined')){this.animation=new Animation(options['animation']);}else{this.animation=new Animation();}
if((options!=null)&&(options['pins'])&&(typeof(options['pins'])!=='undefined')){this.pins=new Pin(options['pins']);}
if((this.drawMode=='image')||(this.drawMode=='segmentImage')){if(typeof(options['fillStyle'])==='undefined'){this.fillStyle=null;}
if(typeof(options['strokeStyle'])==='undefined'){this.strokeStyle='red';}
if(typeof(options['drawText'])==='undefined'){this.drawText=false;}
if(typeof(options['lineWidth'])==='undefined'){this.lineWidth=1;}
if(typeof(drawWheel)==='undefined'){drawWheel=false;}}else{if(typeof(drawWheel)==='undefined'){drawWheel=true;}}
if((options!=null)&&(options['pointerGuide'])&&(typeof(options['pointerGuide'])!=='undefined')){this.pointerGuide=new PointerGuide(options['pointerGuide']);}else{this.pointerGuide=new PointerGuide();}
if(this.responsive){winwheelToDrawDuringAnimation=this;this._originalCanvasWidth=this.canvas.width;this._originalCanvasHeight=this.canvas.height;this._responsiveScaleHeight=this.canvas.dataset.responsivescaleheight;this._responsiveMinWidth=this.canvas.dataset.responsiveminwidth;this._responsiveMinHeight=this.canvas.dataset.responsiveminheight;this._responsiveMargin=this.canvas.dataset.responsivemargin;window.addEventListener("load",winwheelResize);window.addEventListener("resize",winwheelResize);}
if(drawWheel==true){this.draw(this.clearTheCanvas);}else if(this.drawMode=='segmentImage'){winwheelToDrawDuringAnimation=this;winhweelAlreadyDrawn=false;for(let y=1;y<=this.numSegments;y++){if(this.segments[y].image!==null){this.segments[y].imgData=new Image();this.segments[y].imgData.onload=winwheelLoadedImage;this.segments[y].imgData.src=this.segments[y].image;}}}}
Winwheel.prototype.updateSegmentSizes=function()
{if(this.segments){let arcUsed=0;let numSet=0;for(let x=1;x<=this.numSegments;x++){if(this.segments[x].size!==null){arcUsed+=this.segments[x].size;numSet++;}}
let arcLeft=(360-arcUsed);let degreesEach=0;if(arcLeft>0){degreesEach=(arcLeft/(this.numSegments-numSet));}
let currentDegree=0;for(let x=1;x<=this.numSegments;x++){this.segments[x].startAngle=currentDegree;if(this.segments[x].size){currentDegree+=this.segments[x].size;}else{currentDegree+=degreesEach;}
this.segments[x].endAngle=currentDegree;}}}
Winwheel.prototype.clearCanvas=function()
{if(this.ctx){this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);}}
Winwheel.prototype.draw=function(clearTheCanvas)
{if(this.ctx){if(typeof(clearTheCanvas)!=='undefined'){if(clearTheCanvas==true){this.clearCanvas();}}else{this.clearCanvas();}
if(this.drawMode=='image'){this.drawWheelImage();if(this.drawText==true){this.drawSegmentText();}
if(this.imageOverlay==true){this.drawSegments();}}else if(this.drawMode=='segmentImage'){this.drawSegmentImages();if(this.drawText==true){this.drawSegmentText();}
if(this.imageOverlay==true){this.drawSegments();}}else{this.drawSegments();if(this.drawText==true){this.drawSegmentText();}}
if(typeof this.pins!=='undefined'){if(this.pins.visible==true){this.drawPins();}}
if(this.pointerGuide.display==true){this.drawPointerGuide();}}}
Winwheel.prototype.drawPins=function()
{if((this.pins)&&(this.pins.number)){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);let pinOuterRadius=this.pins.outerRadius;let pinMargin=this.pins.margin;if(this.pins.responsive){pinOuterRadius=(this.pins.outerRadius*this.scaleFactor);pinMargin=(this.pins.margin*this.scaleFactor);}
let pinSpacing=(360/this.pins.number);for(let i=1;i<=this.pins.number;i++){this.ctx.save();this.ctx.strokeStyle=this.pins.strokeStyle;this.ctx.lineWidth=this.pins.lineWidth;this.ctx.fillStyle=this.pins.fillStyle;this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(i*pinSpacing+this.rotationAngle));this.ctx.translate(-centerX,-centerY);this.ctx.beginPath();this.ctx.arc(centerX,(centerY-outerRadius)+pinOuterRadius+pinMargin,pinOuterRadius,0,2*Math.PI);if(this.pins.fillStyle){this.ctx.fill();}
if(this.pins.strokeStyle){this.ctx.stroke();}
this.ctx.restore();}}}
Winwheel.prototype.drawPointerGuide=function()
{if(this.ctx){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(this.pointerAngle));this.ctx.translate(-centerX,-centerY);this.ctx.strokeStyle=this.pointerGuide.strokeStyle;this.ctx.lineWidth=this.pointerGuide.lineWidth;this.ctx.beginPath();this.ctx.moveTo(centerX,centerY);this.ctx.lineTo(centerX,-(outerRadius/4));this.ctx.stroke();this.ctx.restore();}}
Winwheel.prototype.drawWheelImage=function()
{if(this.wheelImage!=null){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let scaledWidth=(this.wheelImage.width*this.scaleFactor);let scaledHeight=(this.wheelImage.height*this.scaleFactor);let imageLeft=(centerX-(scaledWidth/2));let imageTop=(centerY-(scaledHeight/2));this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(this.rotationAngle));this.ctx.translate(-centerX,-centerY);this.ctx.drawImage(this.wheelImage,imageLeft,imageTop,scaledWidth,scaledHeight);this.ctx.restore();}}
Winwheel.prototype.drawSegmentImages=function()
{if(this.ctx){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);if(this.segments){for(let x=1;x<=this.numSegments;x++){let seg=this.segments[x];if(seg.imgData.height){let imageLeft=0;let imageTop=0;let imageAngle=0;let imageDirection='';let scaledWidth=(seg.imgData.width*this.scaleFactor);let scaledHeight=(seg.imgData.height*this.scaleFactor);if(seg.imageDirection!==null){imageDirection=seg.imageDirection;}else{imageDirection=this.imageDirection;}
if(imageDirection=='S'){imageLeft=(centerX-(scaledWidth/2));imageTop=centerY;imageAngle=(seg.startAngle+180+((seg.endAngle-seg.startAngle)/2));}else if(imageDirection=='E'){imageLeft=centerX;imageTop=(centerY-(scaledHeight/2));imageAngle=(seg.startAngle+270+((seg.endAngle-seg.startAngle)/2));}else if(imageDirection=='W'){imageLeft=(centerX-scaledWidth);imageTop=(centerY-(scaledHeight/2));imageAngle=(seg.startAngle+90+((seg.endAngle-seg.startAngle)/2));}else{imageLeft=(centerX-(scaledWidth/2));imageTop=(centerY-scaledHeight);imageAngle=(seg.startAngle+((seg.endAngle-seg.startAngle)/2));}
this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(this.rotationAngle+imageAngle));this.ctx.translate(-centerX,-centerY);this.ctx.drawImage(seg.imgData,imageLeft,imageTop,scaledWidth,scaledHeight);this.ctx.restore();}else{console.log('Segment '+x+' imgData is not loaded');}}}}}
Winwheel.prototype.drawSegments=function()
{if(this.ctx){if(this.segments){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let innerRadius=(this.innerRadius*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);for(let x=1;x<=this.numSegments;x++){let seg=this.segments[x];let fillStyle;let lineWidth;let strokeStyle;if(seg.fillStyle!==null){fillStyle=seg.fillStyle;}else{fillStyle=this.fillStyle;}
this.ctx.fillStyle=fillStyle;if(seg.lineWidth!==null){lineWidth=seg.lineWidth;}else{lineWidth=this.lineWidth;}
this.ctx.lineWidth=lineWidth;if(seg.strokeStyle!==null){strokeStyle=seg.strokeStyle;}else{strokeStyle=this.strokeStyle;}
this.ctx.strokeStyle=strokeStyle;if((strokeStyle)||(fillStyle)){this.ctx.beginPath();if(!this.innerRadius){this.ctx.moveTo(centerX,centerY);}else{let iX=Math.cos(this.degToRad(seg.startAngle+this.rotationAngle-90))*(innerRadius-lineWidth/2);let iY=Math.sin(this.degToRad(seg.startAngle+this.rotationAngle-90))*(innerRadius-lineWidth/2);this.ctx.moveTo(centerX+iX,centerY+iY);}
this.ctx.arc(centerX,centerY,outerRadius,this.degToRad(seg.startAngle+this.rotationAngle-90),this.degToRad(seg.endAngle+this.rotationAngle-90),false);if(this.innerRadius){this.ctx.arc(centerX,centerY,innerRadius,this.degToRad(seg.endAngle+this.rotationAngle-90),this.degToRad(seg.startAngle+this.rotationAngle-90),true);}else{this.ctx.lineTo(centerX,centerY);}
if(fillStyle){this.ctx.fill();}
if(strokeStyle){this.ctx.stroke();}}}}}}
Winwheel.prototype.drawSegmentText=function()
{if(this.ctx){let fontFamily;let fontSize;let fontWeight;let orientation;let alignment;let direction;let margin;let fillStyle;let strokeStyle;let lineWidth;let fontSetting;let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);let innerRadius=(this.innerRadius*this.scaleFactor);for(let x=1;x<=this.numSegments;x++){this.ctx.save();let seg=this.segments[x];if(seg.text){if(seg.textFontFamily!==null)fontFamily=seg.textFontFamily;else fontFamily=this.textFontFamily;if(seg.textFontSize!==null)fontSize=seg.textFontSize;else fontSize=this.textFontSize;if(seg.textFontWeight!==null)fontWeight=seg.textFontWeight;else fontWeight=this.textFontWeight;if(seg.textOrientation!==null)orientation=seg.textOrientation;else orientation=this.textOrientation;if(seg.textAlignment!==null)alignment=seg.textAlignment;else alignment=this.textAlignment;if(seg.textDirection!==null)direction=seg.textDirection;else direction=this.textDirection;if(seg.textMargin!==null)margin=seg.textMargin;else margin=this.textMargin;if(seg.textFillStyle!==null)fillStyle=seg.textFillStyle;else fillStyle=this.textFillStyle;if(seg.textStrokeStyle!==null)strokeStyle=seg.textStrokeStyle;else strokeStyle=this.textStrokeStyle;if(seg.textLineWidth!==null)lineWidth=seg.textLineWidth;else lineWidth=this.textLineWidth;fontSize=(fontSize*this.scaleFactor);margin=(margin*this.scaleFactor);let fontSetting='';if(fontWeight!=null){fontSetting+=fontWeight+' ';}
if(fontSize!=null){fontSetting+=fontSize+'px ';}
if(fontFamily!=null){fontSetting+=fontFamily;}
this.ctx.font=fontSetting;this.ctx.fillStyle=fillStyle;this.ctx.strokeStyle=strokeStyle;this.ctx.lineWidth=lineWidth;let lines=seg.text.split('\n');let lineOffset=0-(fontSize*(lines.length/2))+(fontSize/2);if((orientation=='curved')&&((alignment=='inner')||(alignment=='outer'))){lineOffset=0;}
for(let i=0;i<lines.length;i++){if(direction=='reversed'){if(orientation=='horizontal'){if(alignment=='inner'){this.ctx.textAlign='right';}else if(alignment=='outer'){this.ctx.textAlign='left';}else{this.ctx.textAlign='center';}
this.ctx.textBaseline='middle';let textAngle=this.degToRad((seg.endAngle-((seg.endAngle-seg.startAngle)/2)+this.rotationAngle-90)-180);this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(textAngle);this.ctx.translate(-centerX,-centerY);if(alignment=='inner'){if(fillStyle){this.ctx.fillText(lines[i],centerX-innerRadius-margin,centerY+lineOffset);}
if(strokeStyle){this.ctx.strokeText(lines[i],centerX-innerRadius-margin,centerY+lineOffset);}}else if(alignment=='outer'){if(fillStyle){this.ctx.fillText(lines[i],centerX-outerRadius+margin,centerY+lineOffset);}
if(strokeStyle){this.ctx.strokeText(lines[i],centerX-outerRadius+margin,centerY+lineOffset);}}else{if(fillStyle){this.ctx.fillText(lines[i],centerX-innerRadius-((outerRadius-innerRadius)/2)-margin,centerY+lineOffset);}
if(strokeStyle){this.ctx.strokeText(lines[i],centerX-innerRadius-((outerRadius-innerRadius)/2)-margin,centerY+lineOffset);}}
this.ctx.restore();}else if(orientation=='vertical'){this.ctx.textAlign='center';if(alignment=='inner'){this.ctx.textBaseline='top';}else if(alignment=='outer'){this.ctx.textBaseline='bottom';}else{this.ctx.textBaseline='middle';}
let textAngle=(seg.endAngle-((seg.endAngle-seg.startAngle)/2)-180);textAngle+=this.rotationAngle;this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(textAngle));this.ctx.translate(-centerX,-centerY);let yPos=0;if(alignment=='outer'){yPos=(centerY+outerRadius-margin);}else if(alignment=='inner'){yPos=(centerY+innerRadius+margin);}
let yInc=(fontSize-(fontSize/9));if(alignment=='outer'){for(let c=(lines[i].length-1);c>=0;c--){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
yPos-=yInc;}}else if(alignment=='inner'){for(let c=0;c<lines[i].length;c++){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
yPos+=yInc;}}else if(alignment=='center'){let centerAdjustment=0;if(lines[i].length>1){centerAdjustment=(yInc*(lines[i].length-1)/2);}
let yPos=(centerY+innerRadius+((outerRadius-innerRadius)/2))+centerAdjustment+margin;for(let c=(lines[i].length-1);c>=0;c--){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
yPos-=yInc;}}
this.ctx.restore();}else if(orientation=='curved'){let radius=0;if(alignment=='inner'){radius=innerRadius+margin;this.ctx.textBaseline='top';}else if(alignment=='outer'){radius=outerRadius-margin;this.ctx.textBaseline='bottom';radius-=(fontSize*(lines.length-1));}else if(alignment=='center'){radius=innerRadius+margin+((outerRadius-innerRadius)/2);this.ctx.textBaseline='middle';}
let anglePerChar=0;let drawAngle=0;if(lines[i].length>1){this.ctx.textAlign='left';anglePerChar=(4*(fontSize/10));let radiusPercent=(100/radius);anglePerChar=(anglePerChar*radiusPercent);let totalArc=(anglePerChar*lines[i].length);drawAngle=seg.startAngle+(((seg.endAngle-seg.startAngle)/2)-(totalArc/2));}else{drawAngle=(seg.startAngle+((seg.endAngle-seg.startAngle)/2));this.ctx.textAlign='center';}
drawAngle+=this.rotationAngle;drawAngle-=180;for(let c=lines[i].length;c>=0;c--){this.ctx.save();let character=lines[i].charAt(c);this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(drawAngle));this.ctx.translate(-centerX,-centerY);if(strokeStyle){this.ctx.strokeText(character,centerX,centerY+radius+lineOffset);}
if(fillStyle){this.ctx.fillText(character,centerX,centerY+radius+lineOffset);}
drawAngle+=anglePerChar;this.ctx.restore();}}}else{if(orientation=='horizontal'){if(alignment=='inner'){this.ctx.textAlign='left';}else if(alignment=='outer'){this.ctx.textAlign='right';}else{this.ctx.textAlign='center';}
this.ctx.textBaseline='middle';let textAngle=this.degToRad(seg.endAngle-((seg.endAngle-seg.startAngle)/2)+this.rotationAngle-90);this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(textAngle);this.ctx.translate(-centerX,-centerY);if(alignment=='inner'){if(fillStyle){this.ctx.fillText(lines[i],centerX+innerRadius+margin,centerY+lineOffset);}
if(strokeStyle){this.ctx.strokeText(lines[i],centerX+innerRadius+margin,centerY+lineOffset);}}else if(alignment=='outer'){if(fillStyle){this.ctx.fillText(lines[i],centerX+outerRadius-margin,centerY+lineOffset);}
if(strokeStyle){this.ctx.strokeText(lines[i],centerX+outerRadius-margin,centerY+lineOffset);}}else{if(fillStyle){this.ctx.fillText(lines[i],centerX+innerRadius+((outerRadius-innerRadius)/2)+margin,centerY+lineOffset);}
if(strokeStyle){this.ctx.strokeText(lines[i],centerX+innerRadius+((outerRadius-innerRadius)/2)+margin,centerY+lineOffset);}}
this.ctx.restore();}else if(orientation=='vertical'){this.ctx.textAlign='center';if(alignment=='inner'){this.ctx.textBaseline='bottom';}else if(alignment=='outer'){this.ctx.textBaseline='top';}else{this.ctx.textBaseline='middle';}
let textAngle=seg.endAngle-((seg.endAngle-seg.startAngle)/2);textAngle+=this.rotationAngle;this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(textAngle));this.ctx.translate(-centerX,-centerY);let yPos=0;if(alignment=='outer'){yPos=(centerY-outerRadius+margin);}else if(alignment=='inner'){yPos=(centerY-innerRadius-margin);}
let yInc=(fontSize-(fontSize/9));if(alignment=='outer'){for(let c=0;c<lines[i].length;c++){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
yPos+=yInc;}}else if(alignment=='inner'){for(let c=(lines[i].length-1);c>=0;c--){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
yPos-=yInc;}}else if(alignment=='center'){let centerAdjustment=0;if(lines[i].length>1){centerAdjustment=(yInc*(lines[i].length-1)/2);}
let yPos=(centerY-innerRadius-((outerRadius-innerRadius)/2))-centerAdjustment-margin;for(let c=0;c<lines[i].length;c++){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
yPos+=yInc;}}
this.ctx.restore();}else if(orientation=='curved'){let radius=0;if(alignment=='inner'){radius=innerRadius+margin;this.ctx.textBaseline='bottom';radius+=(fontSize*(lines.length-1));}else if(alignment=='outer'){radius=outerRadius-margin;this.ctx.textBaseline='top';}else if(alignment=='center'){radius=innerRadius+margin+((outerRadius-innerRadius)/2);this.ctx.textBaseline='middle';}
let anglePerChar=0;let drawAngle=0;if(lines[i].length>1){this.ctx.textAlign='left';anglePerChar=(4*(fontSize/10));let radiusPercent=(100/radius);anglePerChar=(anglePerChar*radiusPercent);let totalArc=(anglePerChar*lines[i].length);drawAngle=seg.startAngle+(((seg.endAngle-seg.startAngle)/2)-(totalArc/2));}else{drawAngle=(seg.startAngle+((seg.endAngle-seg.startAngle)/2));this.ctx.textAlign='center';}
drawAngle+=this.rotationAngle;for(let c=0;c<(lines[i].length);c++){this.ctx.save();let character=lines[i].charAt(c);this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(drawAngle));this.ctx.translate(-centerX,-centerY);if(strokeStyle){this.ctx.strokeText(character,centerX,centerY-radius+lineOffset);}
if(fillStyle){this.ctx.fillText(character,centerX,centerY-radius+lineOffset);}
drawAngle+=anglePerChar;this.ctx.restore();}}}
lineOffset+=fontSize;}}
this.ctx.restore();}}}
Winwheel.prototype.degToRad=function(d)
{return d*0.0174532925199432957;}
Winwheel.prototype.setCenter=function(x,y)
{this.centerX=x;this.centerY=y;}
Winwheel.prototype.addSegment=function(options,position)
{let newSegment=new Segment(options);this.numSegments++;let segmentPos;if(typeof position!=='undefined'){for(let x=this.numSegments;x>position;x--){this.segments[x]=this.segments[x-1];}
this.segments[position]=newSegment;segmentPos=position;}else{this.segments[this.numSegments]=newSegment;segmentPos=this.numSegments;}
this.updateSegmentSizes();return this.segments[segmentPos];}
Winwheel.prototype.setCanvasId=function(canvasId)
{if(canvasId){this.canvasId=canvasId;this.canvas=document.getElementById(this.canvasId);if(this.canvas){this.ctx=this.canvas.getContext('2d');}}else{this.canvasId=null
this.ctx=null;this.canvas=null;}}
Winwheel.prototype.deleteSegment=function(position)
{if(this.numSegments>1){if(typeof position!=='undefined'){for(let x=position;x<this.numSegments;x++){this.segments[x]=this.segments[x+1];}}
this.segments[this.numSegments]=undefined;this.numSegments--;this.updateSegmentSizes();}}
Winwheel.prototype.windowToCanvas=function(x,y)
{let bbox=this.canvas.getBoundingClientRect();return{x:Math.floor(x-bbox.left*(this.canvas.width/bbox.width)),y:Math.floor(y-bbox.top*(this.canvas.height/bbox.height))};}
Winwheel.prototype.getSegmentAt=function(x,y)
{let foundSegment=null;let segmentNumber=this.getSegmentNumberAt(x,y);if(segmentNumber!==null){foundSegment=this.segments[segmentNumber];}
return foundSegment;}
Winwheel.prototype.getSegmentNumberAt=function(x,y)
{let loc=this.windowToCanvas(x,y);let topBottom;let leftRight;let adjacentSideLength;let oppositeSideLength;let hypotenuseSideLength;let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);let innerRadius=(this.innerRadius*this.scaleFactor);if(loc.x>centerX){adjacentSideLength=(loc.x-centerX);leftRight='R';}else{adjacentSideLength=(centerX-loc.x);leftRight='L';}
if(loc.y>centerY){oppositeSideLength=(loc.y-centerY);topBottom='B';}else{oppositeSideLength=(centerY-loc.y);topBottom='T';}
let tanVal=oppositeSideLength/adjacentSideLength;let result=(Math.atan(tanVal)*180/Math.PI);let locationAngle=0;hypotenuseSideLength=Math.sqrt((oppositeSideLength*oppositeSideLength)+(adjacentSideLength*adjacentSideLength));if((topBottom=='T')&&(leftRight=='R')){locationAngle=Math.round(90-result);}else if((topBottom=='B')&&(leftRight=='R')){locationAngle=Math.round(result+90);}else if((topBottom=='B')&&(leftRight=='L')){locationAngle=Math.round((90-result)+180);}else if((topBottom=='T')&&(leftRight=='L')){locationAngle=Math.round(result+270);}
if(this.rotationAngle!=0){let rotatedPosition=this.getRotationPosition();locationAngle=(locationAngle-rotatedPosition);if(locationAngle<0){locationAngle=(360-Math.abs(locationAngle));}}
let foundSegmentNumber=null;for(let x=1;x<=this.numSegments;x++){if((locationAngle>=this.segments[x].startAngle)&&(locationAngle<=this.segments[x].endAngle)){if((hypotenuseSideLength>=innerRadius)&&(hypotenuseSideLength<=outerRadius)){foundSegmentNumber=x;break;}}}
return foundSegmentNumber;}
Winwheel.prototype.getIndicatedSegment=function()
{let prizeNumber=this.getIndicatedSegmentNumber();return this.segments[prizeNumber];}
Winwheel.prototype.getIndicatedSegmentNumber=function()
{let indicatedPrize=0;let rawAngle=this.getRotationPosition();let relativeAngle=Math.floor(this.pointerAngle-rawAngle);if(relativeAngle<0){relativeAngle=360-Math.abs(relativeAngle);}
for(let x=1;x<(this.segments.length);x++){if((relativeAngle>=this.segments[x]['startAngle'])&&(relativeAngle<=this.segments[x]['endAngle'])){indicatedPrize=x;break;}}
return indicatedPrize;}
Winwheel.prototype.getCurrentPinNumber=function()
{let currentPin=0;if(this.pins){let rawAngle=this.getRotationPosition();let relativeAngle=Math.floor(this.pointerAngle-rawAngle);if(relativeAngle<0){relativeAngle=360-Math.abs(relativeAngle);}
let pinSpacing=(360/this.pins.number);let totalPinAngle=0;for(let x=0;x<(this.pins.number);x++){if((relativeAngle>=totalPinAngle)&&(relativeAngle<=(totalPinAngle+pinSpacing))){currentPin=x;break;}
totalPinAngle+=pinSpacing;}
if(this.animation.direction=='clockwise'){currentPin++;if(currentPin>this.pins.number){currentPin=0;}}}
return currentPin;}
Winwheel.prototype.getRotationPosition=function()
{let rawAngle=this.rotationAngle;if(rawAngle>=0){if(rawAngle>360){let timesPast360=Math.floor(rawAngle/360);rawAngle=(rawAngle-(360*timesPast360));}}else{if(rawAngle<-360){let timesPast360=Math.ceil(rawAngle/360);rawAngle=(rawAngle-(360*timesPast360));}
rawAngle=(360+rawAngle);}
return rawAngle;}
Winwheel.prototype.startAnimation=function()
{if(this.animation){this.computeAnimation();winwheelToDrawDuringAnimation=this;let properties=new Array(null);properties[this.animation.propertyName]=this.animation.propertyValue;properties['yoyo']=this.animation.yoyo;properties['repeat']=this.animation.repeat;properties['ease']=this.animation.easing;properties['onUpdate']=winwheelAnimationLoop;properties['onComplete']=winwheelStopAnimation;this.tween=TweenMax.to(this,this.animation.duration,properties);}}
Winwheel.prototype.stopAnimation=function(canCallback)
{if(winwheelToDrawDuringAnimation){if(winwheelToDrawDuringAnimation.tween){winwheelToDrawDuringAnimation.tween.kill();}
winwheelStopAnimation(canCallback);}
winwheelToDrawDuringAnimation=this;}
Winwheel.prototype.pauseAnimation=function()
{if(this.tween){this.tween.pause();}}
Winwheel.prototype.resumeAnimation=function()
{if(this.tween){this.tween.play();}}
Winwheel.prototype.computeAnimation=function()
{if(this.animation){if(this.animation.type=='spinOngoing'){this.animation.propertyName='rotationAngle';if(this.animation.spins==null){this.animation.spins=5;}
if(this.animation.repeat==null){this.animation.repeat=-1;}
if(this.animation.easing==null){this.animation.easing='Linear.easeNone';}
if(this.animation.yoyo==null){this.animation.yoyo=false;}
this.animation.propertyValue=(this.animation.spins*360);if(this.animation.direction=='anti-clockwise'){this.animation.propertyValue=(0-this.animation.propertyValue);}}else if(this.animation.type=='spinToStop'){this.animation.propertyName='rotationAngle';if(this.animation.spins==null){this.animation.spins=5;}
if(this.animation.repeat==null){this.animation.repeat=0;}
if(this.animation.easing==null){this.animation.easing='Power3.easeOut';}
if(this.animation.stopAngle==null){this.animation._stopAngle=Math.floor((Math.random()*359));}else{this.animation._stopAngle=(360-this.animation.stopAngle+this.pointerAngle);}
if(this.animation.yoyo==null){this.animation.yoyo=false;}
this.animation.propertyValue=(this.animation.spins*360);if(this.animation.direction=='anti-clockwise'){this.animation.propertyValue=(0-this.animation.propertyValue);this.animation.propertyValue-=(360-this.animation._stopAngle);}else{this.animation.propertyValue+=this.animation._stopAngle;}}else if(this.animation.type=='spinAndBack'){this.animation.propertyName='rotationAngle';if(this.animation.spins==null){this.animation.spins=5;}
if(this.animation.repeat==null){this.animation.repeat=1;}
if(this.animation.easing==null){this.animation.easing='Power2.easeInOut';}
if(this.animation.yoyo==null){this.animation.yoyo=true;}
if(this.animation.stopAngle==null){this.animation._stopAngle=0;}else{this.animation._stopAngle=(360-this.animation.stopAngle);}
this.animation.propertyValue=(this.animation.spins*360);if(this.animation.direction=='anti-clockwise'){this.animation.propertyValue=(0-this.animation.propertyValue);this.animation.propertyValue-=(360-this.animation._stopAngle);}else{this.animation.propertyValue+=this.animation._stopAngle;}}else if(this.animation.type=='custom'){}}}
Winwheel.prototype.getRandomForSegment=function(segmentNumber)
{let stopAngle=0;if(segmentNumber){if(typeof this.segments[segmentNumber]!=='undefined'){let startAngle=this.segments[segmentNumber].startAngle;let endAngle=this.segments[segmentNumber].endAngle;let range=(endAngle-startAngle)-2;if(range>0){stopAngle=(startAngle+1+Math.floor((Math.random()*range)));}else{console.log('Segment size is too small to safely get random angle inside it');}}else{console.log('Segment '+segmentNumber+' undefined');}}else{console.log('Segment number not specified');}
return stopAngle;}
function Pin(options)
{let defaultOptions={'visible':true,'number':36,'outerRadius':3,'fillStyle':'grey','strokeStyle':'black','lineWidth':1,'margin':3,'responsive':false,};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}
if(options!=null){for(let key in options){if(typeof(this[key])==='undefined'){this[key]=options[key];}}}}
function Animation(options)
{let defaultOptions={'type':'spinOngoing','direction':'clockwise','propertyName':null,'propertyValue':null,'duration':10,'yoyo':false,'repeat':null,'easing':null,'stopAngle':null,'spins':null,'clearTheCanvas':null,'callbackFinished':null,'callbackBefore':null,'callbackAfter':null,'callbackSound':null,'soundTrigger':'segment'};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}
if(options!=null){for(let key in options){if(typeof(this[key])==='undefined'){this[key]=options[key];}}}}
function Segment(options)
{let defaultOptions={'size':null,'text':'','fillStyle':null,'strokeStyle':null,'lineWidth':null,'textFontFamily':null,'textFontSize':null,'textFontWeight':null,'textOrientation':null,'textAlignment':null,'textDirection':null,'textMargin':null,'textFillStyle':null,'textStrokeStyle':null,'textLineWidth':null,'image':null,'imageDirection':null,'imgData':null};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}
if(options!=null){for(let key in options){if(typeof(this[key])==='undefined'){this[key]=options[key];}}}
this.startAngle=0;this.endAngle=0;}
Segment.prototype.changeImage=function(image,imageDirection)
{this.image=image;this.imgData=null;if(imageDirection){this.imageDirection=imageDirection;}
winhweelAlreadyDrawn=false;this.imgData=new Image();this.imgData.onload=winwheelLoadedImage;this.imgData.src=this.image;}
function PointerGuide(options)
{let defaultOptions={'display':false,'strokeStyle':'red','lineWidth':3};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}}
function winwheelPercentToDegrees(percentValue)
{let degrees=0;if((percentValue>0)&&(percentValue<=100)){let divider=(percentValue/100);degrees=(360*divider);}
return degrees;}
function winwheelAnimationLoop()
{if(winwheelToDrawDuringAnimation){if(winwheelToDrawDuringAnimation.animation.clearTheCanvas!=false){winwheelToDrawDuringAnimation.ctx.clearRect(0,0,winwheelToDrawDuringAnimation.canvas.width,winwheelToDrawDuringAnimation.canvas.height);}
let callbackBefore=winwheelToDrawDuringAnimation.animation.callbackBefore;let callbackAfter=winwheelToDrawDuringAnimation.animation.callbackAfter;if(callbackBefore!=null){if(typeof callbackBefore==='function'){callbackBefore();}else{eval(callbackBefore);}}
winwheelToDrawDuringAnimation.draw(false);if(callbackAfter!=null){if(typeof callbackAfter==='function'){callbackAfter();}else{eval(callbackAfter);}}
if(winwheelToDrawDuringAnimation.animation.callbackSound){winwheelTriggerSound();}}}
function winwheelTriggerSound()
{if(winwheelToDrawDuringAnimation.hasOwnProperty('_lastSoundTriggerNumber')==false){winwheelToDrawDuringAnimation._lastSoundTriggerNumber=0;}
let callbackSound=winwheelToDrawDuringAnimation.animation.callbackSound;let currentTriggerNumber=0;if(winwheelToDrawDuringAnimation.animation.soundTrigger=='pin'){currentTriggerNumber=winwheelToDrawDuringAnimation.getCurrentPinNumber();}else{currentTriggerNumber=winwheelToDrawDuringAnimation.getIndicatedSegmentNumber();}
if(currentTriggerNumber!=winwheelToDrawDuringAnimation._lastSoundTriggerNumber){if(typeof callbackSound==='function'){callbackSound();}else{eval(callbackSound);}
winwheelToDrawDuringAnimation._lastSoundTriggerNumber=currentTriggerNumber;}}
let winwheelToDrawDuringAnimation=null;function winwheelStopAnimation(canCallback)
{if(canCallback!=false){let callback=winwheelToDrawDuringAnimation.animation.callbackFinished;if(callback!=null){if(typeof callback==='function'){callback(winwheelToDrawDuringAnimation.getIndicatedSegment());}else{eval(callback);}}}}
let winhweelAlreadyDrawn=false;function winwheelLoadedImage()
{if(winhweelAlreadyDrawn==false){let winwheelImageLoadCount=0;for(let i=1;i<=winwheelToDrawDuringAnimation.numSegments;i++){if((winwheelToDrawDuringAnimation.segments[i].imgData!=null)&&(winwheelToDrawDuringAnimation.segments[i].imgData.height)){winwheelImageLoadCount++;}}
if(winwheelImageLoadCount==winwheelToDrawDuringAnimation.numSegments){winhweelAlreadyDrawn=true;winwheelToDrawDuringAnimation.draw();}}}
function winwheelResize()
{let margin=40;if(typeof(winwheelToDrawDuringAnimation._responsiveMargin)!=='undefined'){margin=winwheelToDrawDuringAnimation._responsiveMargin;}
let width=window.innerWidth-margin;let minWidth=winwheelToDrawDuringAnimation._responsiveMinWidth;let minHeight=winwheelToDrawDuringAnimation._responsiveMinHeight;if(width<minWidth){width=minWidth;}else if(width>winwheelToDrawDuringAnimation._originalCanvasWidth){width=winwheelToDrawDuringAnimation._originalCanvasWidth;}
let percent=(width/winwheelToDrawDuringAnimation._originalCanvasWidth);winwheelToDrawDuringAnimation.canvas.width=(winwheelToDrawDuringAnimation._originalCanvasWidth*percent);if(winwheelToDrawDuringAnimation._responsiveScaleHeight){let height=(winwheelToDrawDuringAnimation._originalCanvasHeight*percent);if(height<minHeight){height=minHeight;}else if(height>winwheelToDrawDuringAnimation._originalCanvasHeight){height=winwheelToDrawDuringAnimation._originalCanvasHeight;}
winwheelToDrawDuringAnimation.canvas.height=height;}
winwheelToDrawDuringAnimation.scaleFactor=percent;winwheelToDrawDuringAnimation.draw();}

View File

@ -0,0 +1 @@
.elementor-443 .elementor-element.elementor-element-55a9332{padding:0}.elementor-443 .elementor-element.elementor-element-976a94c>.elementor-element-populated{padding:10px}.elementor-443 .elementor-element.elementor-element-bffad37 .hfe-copyright-wrapper{text-align:center}@media(max-width:1024px){.elementor-443 .elementor-element.elementor-element-55a9332{padding:20px}}@media(max-width:767px){.elementor-443 .elementor-element.elementor-element-bffad37 .hfe-copyright-wrapper{text-align:center}}

BIN
bocciofila/bgdottedeven.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

BIN
bocciofila/cheers/1.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/10.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/11.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/12.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/13.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/14.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/2.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/3.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/4.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/5.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/6.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/7.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/8.ogg Normal file

Binary file not shown.

BIN
bocciofila/cheers/9.ogg Normal file

Binary file not shown.

65
bocciofila/clippy.js Normal file
View File

@ -0,0 +1,65 @@
import clippy from '../clippy/dist/index.js'
const ClippyDemo = (function() {
const availableAgents = ['Bonzi', 'Clippy', 'F1', 'Genie', 'Genius', 'Links', 'Merlin', 'Peedy', 'Rocky', 'Rover']
const talks = [
'How can i help you?',
'Nice day!',
'Glad to meet you.',
'At your service',
'Helloo'
]
function init() {
this.$el = document.querySelector('.my-clippy')
}
function nextAgent() {
// let agentName = availableAgents[Math.floor(Math.random() * (availableAgents.length))]
let agentName = 'Clippy';
if (!agentName) return;
clippy.load({
name: agentName,
selector: "my-clippy",
successCb: agent => {
window[agentName] = agent
agent.show();
// Speak on click and start
const speak = () => {
agent.speak('I am ' + agentName + ', ' + talks[~~(Math.random() * talks.length)])
agent.animate()
}
agent._el.addEventListener('click', () =>{
document.getElementById("legend-modal").style.display = "block";
return;
});
speak()
// Animate randomly
setInterval(() => {
agent.animate()
}, 3000 + (Math.random() * 4000))
setInterval(() => speak(), 15000 + (Math.random() * 4000));
speak()
}
});
}
function destroy() {
this.$el.innerHTML = ''
}
return {
init,
nextAgent,
destroy,
}
})();
window.onload = () => {
ClippyDemo.init();
ClippyDemo.nextAgent();
}

21
bocciofila/confetti.css Normal file
View File

@ -0,0 +1,21 @@
.confetti{
max-width: 640px;
display: block;
margin: 0 auto;
border: 1px solid #ddd;
user-select: none;
}
#wheel-container {
position: relative;
left: 30%;
}
.wheel-tab-section {
display: none;
}
#main {
background-image: url("./bgdottedeven.png");
background-color:#fff4f6;
/* Additional background styles if needed */
}
*{cursor: url("pincursorsh.png"), default;}

180
bocciofila/confetti.js Normal file
View File

@ -0,0 +1,180 @@
//-----------Var Inits--------------
canvas = document.getElementById("confetti");
ctx = canvas.getContext("2d");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
cx = ctx.canvas.width / 2;
cy = ctx.canvas.height / 2;
let confetti = [];
const confettiCount = 300;
const gravity = 0.5;
const terminalVelocity = 5;
const drag = 0.075;
const colors = [
{ front: 'red', back: 'darkred' },
{ front: 'green', back: 'darkgreen' },
{ front: 'blue', back: 'darkblue' },
{ front: 'yellow', back: 'darkyellow' },
{ front: 'orange', back: 'darkorange' },
{ front: 'pink', back: 'darkpink' },
{ front: 'purple', back: 'darkpurple' },
{ front: 'turquoise', back: 'darkturquoise' }];
//-----------Functions--------------
resizeCanvas = () => {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
cx = ctx.canvas.width / 2;
cy = ctx.canvas.height / 2;
};
randomRange = (min, max) => Math.random() * (max - min) + min;
initConfetti = () => {
for (let i = 0; i < confettiCount; i++) {
confetti.push({
color: colors[Math.floor(randomRange(0, colors.length))],
dimensions: {
x: randomRange(10, 20),
y: randomRange(10, 30) },
position: {
x: randomRange(0, canvas.width),
y: canvas.height - 1 },
rotation: randomRange(0, 2 * Math.PI),
scale: {
x: 1,
y: 1 },
velocity: {
x: randomRange(-25, 25),
y: randomRange(0, -50) } });
}
};
//---------Render-----------
function render (canvas) {
let ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
let cx = ctx.canvas.width / 2;
let cy = ctx.canvas.height / 2;
ctx.clearRect(0, 0, canvas.width, canvas.height);
confetti.forEach((confetto, index) => {
let width = confetto.dimensions.x * confetto.scale.x;
let height = confetto.dimensions.y * confetto.scale.y;
// Move canvas to position and rotate
ctx.translate(confetto.position.x, confetto.position.y);
ctx.rotate(confetto.rotation);
// Apply forces to velocity
confetto.velocity.x -= confetto.velocity.x * drag;
confetto.velocity.y = Math.min(confetto.velocity.y + gravity, terminalVelocity);
confetto.velocity.x += Math.random() > 0.5 ? Math.random() : -Math.random();
// Set position
confetto.position.x += confetto.velocity.x;
confetto.position.y += confetto.velocity.y;
// Delete confetti when out of frame
if (confetto.position.y >= canvas.height) confetti.splice(index, 1);
// Loop confetto x position
if (confetto.position.x > canvas.width) confetto.position.x = 0;
if (confetto.position.x < 0) confetto.position.x = canvas.width;
// Spin confetto by scaling y
confetto.scale.y = Math.cos(confetto.position.y * 0.1);
ctx.fillStyle = confetto.scale.y > 0 ? confetto.color.front : confetto.color.back;
// Draw confetti
ctx.fillRect(-width / 2, -height / 2, width, height);
// Reset transform matrix
ctx.setTransform(1, 0, 0, 1, 0, 0);
});
// Fire off another round of confetti
// if (confetti.length <= 10) initConfetti();
window.requestAnimationFrame(function() {render(canvas); });
};
//---------Execution--------
// initConfetti();
// render();
//----------Resize----------
window.addEventListener('resize', function () {
resizeCanvas();
});
//------------Click------------
// window.addEventListener('click', function () {
// initConfetti();
// });
function renderAnimation() {
// Create a new canvas element
var canvas = document.createElement('canvas');
// Set the canvas position to be fixed, covering the entire viewport
canvas.style.position = 'fixed';
canvas.style.top = '0';
canvas.style.left = '0';
canvas.style.width = '100%';
canvas.style.height = '100%';
// Make sure the canvas is displayed on top of other elements
canvas.style.zIndex = '9999';
// Append the canvas to the document body
document.body.appendChild(canvas);
// Get the rendering context for the canvas
let ctx = canvas.getContext('2d');
// Perform your animation logic here using the ctx object
// Example animation: drawing a red circle that moves diagonally
var x = 0;
var y = 0;
var radius = 50;
initConfetti();
render(canvas);
// Add a delay before removing the canvas (adjust the delay time as needed)
setTimeout(function() {
// Remove the canvas from the document body
document.body.removeChild(canvas);
}, 8000); // Animation duration in milliseconds
}
function disableScroll() {
document.addEventListener('wheel', preventDefault);
document.addEventListener('touchmove', preventDefault);
document.addEventListener('keydown', preventDefault);
}
function enableScroll() {
document.removeEventListener('wheel', preventDefault);
document.removeEventListener('touchmove', preventDefault);
document.removeEventListener('keydown', preventDefault);
}
function preventDefault(event) {
event.preventDefault();
}
// Call disableScroll() to disable scrolling
disableScroll();

19
bocciofila/cori.js Normal file
View File

@ -0,0 +1,19 @@
var audioFiles = [];
var numAudioFiles = 14;
// Preload the audio files
for (var i = 1; i <= numAudioFiles; i++) {
var coro = new Audio("cheers/" + i + ".ogg");
audioFiles.push(coro);
}
function coro() {
// Generate a random index between 0 and the number of audio files
var randomIndex = Math.floor(Math.random() * numAudioFiles);
// Get the randomly selected audio from the array
var c = audioFiles[randomIndex];
// Play the audio
c.play();
}

2
bocciofila/frontend.min.js vendored Normal file

File diff suppressed because one or more lines are too long

56
bocciofila/home.html Normal file
View File

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="style2.css">
</head>
<body style="background-color:#fff4f6;" background="https://softheartclinic.neocities.org/Visuals/bgdottedeven.png">
<button id="startButton">Avvia il gioco</button>
<div id="gameContainer">
<video id="gameVideo" controls>
<source src="audiovideo.webm" type="video/mp4">
</video>
<button id="toggleButton">Fanculo Mancini, io mi drogo</button>
<div class="my-clippy" id="my-clippy"></div>
<div id="legend-modal" class="modal">
<div class="modal-content" bgcolor="#ffe5e9" style="background-color:#ffe5e9;">
<h2>Legenda</h2>
<ul>
<li>Horny: sei horny per Riccardo, gli metti la mano sulla coscia e non la lasci più andare</li>
<li>Egodeath: hai smesso di usare la prima persona singolare e plurale</li>
<li>Pappagallo: ripeti a pappagallo tutto quello che dice Riccardo</li>
<li>Gemello: ripeti tutte le azioni che Riccardo fa</li>
<li>Desiderio: Riccardo esprime un desiderio, tu lo realizzi</li>
<li>2 Desideri: Riccardo esprime due desideri, tu ne realizzi uno e fai il possibile per non</li>
<li>Schiavo: Riccarrdo farà la prima cosa che gli chiedi. Non devi chiedere con gentilezza</li>
<li>Niente nomi: amnesia collettiva, non ci ricordiamo i nostri nomi</li>
<li>Trivia</li>
<li>Complimento: fai un complimento a Riccardo. Non ho detto di non mentire</li>
<li>Strip: un indumento giù, e Riccardo segue</li>
<li>Flessioni: fai delle flessioni. Riccardo ne farà il doppio</li>
<li>Scelte sbagliate: è arrivato il momento di ricordare a Riccardo quali scelte</li>
<li>ha sbagliato nella vita</li>
<li>Coro: Riccardo ti insegna un coro</li>
<li>Selfie</li>
<li>Sexy selfie</li>
<li>USA: gli stati uniti sono un paese pericoloso. Fai la Cassandra</li>
<li>Culo al muro: tu e Riccardo vi odiate così tanto che tenete il culo attaccato</li>
<li>al muro, ai punti opposti della stanza</li>
<li>Verità: fai una domanda a Riccardo, deve rispondere sinceramente. Poi tocca a lui</li>
</ul>
<button id="close-button">Close</button>
</div>
</div>
<div id="wheel"></div>
</div>
<div>
<!-- <iframe id="gameIframe" src="./ruota.html" width="100%" height="100%" scrolling="no" frameborder="0"></iframe> -->
</div>
<script src="clippy.js" type="module"></script>
<script src="script.js"></script>
</body>
</html>

34
bocciofila/index.html Normal file
View File

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #fff4f6;
}
#startButton {
cursor: pointer;
transform: scale(0.6);
}
</style>
</head>
<body background="bgdottedeven.png">
<a href="#" onclick="startGame();">
<img src="landingfull.png" alt="Start Game" id="startButton">
</a>
<script>
function startGame() {
// Redirect to another page
window.location.href = "/bocciofila/home.html";
}
</script>
</body>
</html>

2
bocciofila/jquery.cookie.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! jquery.cookie v1.4.1 | MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?a(require("jquery")):a(jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});

5
bocciofila/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
bocciofila/landingfull.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

55
bocciofila/lasfida.py Normal file
View File

@ -0,0 +1,55 @@
import random
a = """La povertà è una brutta bestia ma ti fa scoprire la solidarietà.
Il tuo compagno di ponte Riccardo condivide un cicchetto di colluttorio con te"""
PENITENZE = [
"X punti",
"X punti per te e Riccardo",
"X punti per te e un altro infame",
"-X punti per Riccardo",
"-X punti per te e Riccardo",
"Sei ignorante, lanciagli il pezzo che hai appena estratto. Se non cade a terra, Ieso fa X punti",
"Sei horny per Riccardo e glielo devi far capire. Mano sulla coscia",
"Fai il pappagallo",
"Sei il gemello di Riccardo. Fai tutto quello che fa lui, meglio",
"Sei il gemello di Riccardo. Fai tutto quello che fa lui",
"Riccardo esprime un desiderio, tu lo realizzi",
"Riccardo esprime due desideri, tu ne realizzi uno e fai il possibile per non far avverare l'altro",
"Esprimi un desiderio, Riccardo lo avvererà",
"COLLUTTORIO",
"TRIVIA",
"Riccardo è la tua badante",
"Fai un complimento a Riccardo, un complimento falso?",
"Tu e Riccardo perdete un indumento",
"Fai delle flessioni. Riccardo ne farà il doppio",
"Sei un genitore severo, ricorda a Riccardo quale scelta sbagliata ha fatto nella vita",
"Ruba la sedia a Riccardo, lui sta in piedi per un po'",
"Fatti insegnare un coro",
"Fatti un selfie",
"Fatti mandare una sexy fotina col pelo",
"Fatti mandare vocalino sexy prima di andare a dormire stanotte",
"Gli USA sono un paese pericoloso. Spiegagli perchè farà una brutta fine",
]
PERIOD = 12
def perform_extraction(nround: int, requirements: set):
assert(nround < PERIOD)
assert(nround > 0)
range_ = 100 / (PERIOD - len(requirements)) * nround
r = random.uniform(0, 100)
if r < range_:
return random.choice(requirements)
else:
return random.choice(PENITENZE)
def advance(nround: int, last_choices: list):
return None
# Requisiti:
# - ogni 12 estrazioni si deve garantire che almeno una di queste abbia risultato TRIVIA
# - ogni 12 estrazioni si deve garantire che almeno tre di queste abbiano risultato X
# - il risultato COLLUTTORIO può capitare solo una volta ogni 80 estrazioni
# - il risultato delle precedenti 6 estrazioni non si ripete, eccetto che per risultato X

BIN
bocciofila/mancini.mp4 Normal file

Binary file not shown.

BIN
bocciofila/perv.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
bocciofila/pincursorsh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

2
bocciofila/preloaded-modules.min.js vendored Normal file

File diff suppressed because one or more lines are too long

496
bocciofila/ruota.html Normal file

File diff suppressed because one or more lines are too long

90
bocciofila/script.js Normal file
View File

@ -0,0 +1,90 @@
document.addEventListener("DOMContentLoaded", function() {
// var startButton = document.getElementById("startButton");
// startButton.addEventListener("click", function() {
let fun = function() {
startButton.style.display = "none";
// Ottieni il riferimento al contenitore del gioco
var gameContainer = document.getElementById("gameContainer");
var ruota = document.getElementById("gameIframe");
// Mostra il contenitore del gioco
gameContainer.style.display = "block";
var ruota = document.getElementById("block");
// Ottieni il riferimento al video del gioco
var gameVideo = document.getElementById("gameVideo");
// Avvia il video
gameVideo.play();
// Aggiungi una classe CSS per far girare la ruota
gameContainer.classList.add("spin");
loadIframeWithTimeout();
};
fun();
});
function loadIframeWithTimeout() {
// Specify the timeout duration in milliseconds (e.g., 3000ms = 3 seconds)
var timeoutDuration = 0;
// Wait for the specified timeout
setTimeout(function() {
// Create the iframe element
var iframe = document.createElement('iframe');
// Set the source URL of the iframe
iframe.src = './ruota.html';
// Set the desired attributes for the iframe
iframe.width = '100%';
iframe.height = '100%';
iframe.frameBorder = '0';
// Apply CSS styles to cut the left part and center the iframe
iframe.style.position = 'absolute';
// iframe.style.left = '50%';
// iframe.style.transform = 'translateX(-50%)';
// Append the iframe to the bottom of the document body
document.body.appendChild(iframe);
console.log("loaded");
}, timeoutDuration);
}
function disableScroll() {
document.addEventListener('wheel', preventDefault);
document.addEventListener('touchmove', preventDefault);
document.addEventListener('keydown', preventDefault);
}
function enableScroll() {
document.removeEventListener('wheel', preventDefault);
document.removeEventListener('touchmove', preventDefault);
document.removeEventListener('keydown', preventDefault);
}
function preventDefault(event) {
event.preventDefault();
}
// Call disableScroll() to disable scrolling
disableScroll();
var toggleButton = document.getElementById('toggleButton');
var contentDiv = document.getElementById('gameVideo');
toggleButton.addEventListener('click', function() {
if (contentDiv.style.display === 'none') {
contentDiv.style.display = 'block';
} else {
contentDiv.style.display = 'none';
}
});
// document.getElementById("legend-button").addEventListener("click", function() {
// document.getElementById("legend-modal").style.display = "block";
// });
document.getElementById("close-button").addEventListener("click", function() {
document.getElementById("legend-modal").style.display = "none";
});

1
bocciofila/script.min.js vendored Normal file

File diff suppressed because one or more lines are too long

71
bocciofila/style2.css Normal file
View File

@ -0,0 +1,71 @@
#gameContainer {
width: 400px;
height: auto;
margin: 0 auto; /* Centers the container horizontally */
display: none; /* Hides the container by default */
}
html, body {
margin: 0;
padding: 0;
height: 100%;
}
/* #gameContainer { */
/* position: absolute; */
/* top: 0; */
/* left: 0; */
/* width: 100%; */
/* height: 100%; */
/* } */
#gameIframe {
width: 100%;
height: 100%;
border: none;
/* display: none; /\* Hides the container by default *\/ */
margin: 0 auto; /* Centers the container horizontally */
}
.modal {
display: none;
position: fixed;
z-index: 999;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.5);
}
.modal-content {
background-color: #fefefe;
margin: 20% auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
max-width: 800px;
}
#legend-button {
background: none;
border: none;
cursor: pointer;
}
#legend-button img {
width: 80px;
height: 80px;
margin-right: 5px;
}
*{cursor: url("pincursorsh.png"), default;}
#my-clippy {
position: relative;
}
#my-clippy {
position: absolute;
top: 0;
right: 0;
padding: 100px;
}

BIN
bocciofila/tick.mp3 Normal file

Binary file not shown.

64
clippy/demo/demo.js Executable file
View File

@ -0,0 +1,64 @@
import clippy from '../dist/index.js'
const ClippyDemo = (function() {
const availableAgents = ['Bonzi', 'Clippy', 'F1', 'Genie', 'Genius', 'Links', 'Merlin', 'Peedy', 'Rocky', 'Rover']
const talks = [
'How can i help you?',
'Nice day!',
'Glad to meet you.',
'At your service',
'Helloo'
]
function init() {
this.$el = document.querySelector('.my-clippy')
}
function nextAgent() {
let agentName = availableAgents[Math.floor(Math.random() * (availableAgents.length))]
if (!agentName) return;
clippy.load({
name: agentName,
selector: "my-clippy",
successCb: agent => {
window[agentName] = agent
agent.show();
// Speak on click and start
const speak = () => {
agent.speak('I am ' + agentName + ', ' + talks[~~(Math.random() * talks.length)])
agent.animate()
}
agent._el.addEventListener('click', () => speak());
speak()
// Animate randomly
setInterval(() => {
agent.animate()
}, 3000 + (Math.random() * 4000))
}
});
}
function destroy() {
this.$el.innerHTML = ''
}
return {
init,
nextAgent,
destroy,
}
})();
window.onload = () => {
ClippyDemo.init();
ClippyDemo.nextAgent();
document.getElementById('next-agent').addEventListener('click', () => {
ClippyDemo.destroy();
ClippyDemo.nextAgent();
});
}

27
clippy/demo/index.html Executable file
View File

@ -0,0 +1,27 @@
<html>
<head>
<style>
html {
background: url('http://wallpapercave.com/wp/7VNksl0.jpg') no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
#next-agent {
font-size: 1.5em;
}
.my-clippy {
padding-top: 100px;
}
</style>
</head>
<body>
<script src="./demo.js" type="module"></script>
<button id="next-agent">Random agent</button>
<div class="my-clippy"></div>
</body>
</html>

117
clippy/dist/agent.d.ts vendored Normal file
View File

@ -0,0 +1,117 @@
import { AgentWrapper } from './types';
export interface AgentOptions {
agent: AgentWrapper;
selector?: string;
}
export default class Agent {
private _queue;
private _el;
private _animator;
private _balloon;
private _hidden;
private _idleDfd?;
private _offset;
private _dragUpdateLoop?;
private _targetX?;
private _targetY?;
private _moveHandle?;
private _upHandle?;
constructor(options: AgentOptions);
/***
*
* @param {Number} x
* @param {Number} y
*/
gestureAt(x: number, y: number): boolean;
/***
*
* @param {Boolean=} fast
*
*/
hide(fast: boolean, callback: () => void): void;
moveTo(x: number, y: number, duration: number): void;
private _playInternal;
play(animation: any, timeout?: number, cb?: Function): boolean;
/***
*
* @param {Boolean=} fast
*/
show(fast?: boolean): boolean | undefined;
/***
*
* @param {String} text
*/
speak(text: string, hold?: boolean): void;
/***
* Close the current balloon
*/
closeBalloon(): void;
delay(time: number): void;
/***
* Skips the current animation
*/
stopCurrent(): void;
stop(): void;
/***
*
* @param {String} name
* @returns {Boolean}
*/
hasAnimation(name: string): boolean;
/***
* Gets a list of animation names
*
* @return {Array.<string>}
*/
animations(): string[];
/***
* Play a random animation
* @return {Deferred}
*/
animate(): any;
/**************************** Utils ************************************/
/***
*
* @param {Number} x
* @param {Number} y
* @return {String}
* @private
*/
private _getDirection;
/**************************** Queue and Idle handling ************************************/
/***
* Handle empty queue.
* We need to transition the animation to an idle state
* @private
*/
private _onQueueEmpty;
private _onIdleComplete;
/***
* Is the current animation is Idle?
* @return {Boolean}
* @private
*/
private _isIdleAnimation;
/**
* Gets a random Idle animation
* @return {String}
* @private
*/
private _getIdleAnimation;
/**************************** Events ************************************/
private _setupEvents;
private _onDoubleClick;
reposition(): void;
private _onMouseDown;
/**************************** Drag ************************************/
private _startDrag;
private _calculateClickOffset;
private _updateLocation;
private _dragMove;
private _finishDrag;
private _addToQueue;
/**************************** Pause and Resume ************************************/
pause(): void;
resume(): void;
}
//# sourceMappingURL=agent.d.ts.map

1
clippy/dist/agent.d.ts.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,OAAO,CAAuD;IACtE,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAA4B;IAChD,OAAO,CAAC,SAAS,CAAC,CAA4B;gBAEjC,OAAO,EAAE,YAAY;IAsBlC;;;;OAIG;IACH,SAAS,CAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAS/B;;;;OAIG;IACH,IAAI,CAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI;IAoBzC,MAAM,CAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAsD9C,OAAO,CAAC,aAAa;IAYrB,IAAI,CAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ;IAgCrD;;;OAGG;IACH,IAAI,CAAE,IAAI,GAAE,OAAc;IA0B1B;;;OAGG;IACH,KAAK,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAe;IAO1C;;OAEG;IACH,YAAY;IAIZ,KAAK,CAAE,IAAI,EAAE,MAAM;IASnB;;OAEG;IACH,WAAW;IAMX,IAAI;IAOJ;;;;OAIG;IACH,YAAY,CAAE,IAAI,EAAE,MAAM;IAI1B;;;;OAIG;IACH,UAAU;IAIV;;;OAGG;IACH,OAAO,IAAK,GAAG;IAUf,yEAAyE;IAEzE;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAwBrB,2FAA2F;IAE3F;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,eAAe;IAMvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAezB,0EAA0E;IAE1E,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,cAAc;IAMtB,UAAU;IA+BV,OAAO,CAAC,YAAY;IAMpB,wEAAwE;IAExE,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,WAAW;IAKnB,oFAAoF;IAEpF,KAAK;IAML,MAAM;CAKT"}

2
clippy/dist/agents/Bonzi.js vendored Normal file

File diff suppressed because one or more lines are too long

1
clippy/dist/agents/Bonzi.js.map vendored Normal file

File diff suppressed because one or more lines are too long

3
clippy/dist/agents/Bonzi/agent.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
import { AgentConfig } from "../../types";
export declare const agent: AgentConfig;
//# sourceMappingURL=agent.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/Bonzi/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WAyxBnB,CAAA"}

4
clippy/dist/agents/Bonzi/index.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import { AgentWrapper } from '../../types';
declare const Bonzi: AgentWrapper;
export default Bonzi;
//# sourceMappingURL=index.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/Bonzi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,KAAK,EAAE,YAMZ,CAAA;AAED,eAAe,KAAK,CAAC"}

View File

@ -0,0 +1,4 @@
export declare const soundMp3: {
"1": string;
};
//# sourceMappingURL=sounds-mp3.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sounds-mp3.d.ts","sourceRoot":"","sources":["../../../src/agents/Bonzi/sounds-mp3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;CAA8huC,CAAA"}

View File

@ -0,0 +1,10 @@
export declare const soundOgg: {
'1': string;
'2': string;
'3': string;
'4': string;
'5': string;
'6': string;
'7': string;
};
//# sourceMappingURL=sounds-ogg.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sounds-ogg.d.ts","sourceRoot":"","sources":["../../../src/agents/Bonzi/sounds-ogg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;CAA2j0E,CAAA"}

2
clippy/dist/agents/Clippy.js vendored Normal file

File diff suppressed because one or more lines are too long

1
clippy/dist/agents/Clippy.js.map vendored Normal file

File diff suppressed because one or more lines are too long

3
clippy/dist/agents/Clippy/agent.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
import { AgentConfig } from "../../types";
export declare const agent: AgentConfig;
//# sourceMappingURL=agent.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/Clippy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WAo9CnB,CAAA"}

4
clippy/dist/agents/Clippy/index.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import { AgentWrapper } from '../../types';
declare const Clippy: AgentWrapper;
export default Clippy;
//# sourceMappingURL=index.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/Clippy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,MAAM,EAAE,YAMb,CAAA;AAED,eAAe,MAAM,CAAC"}

View File

@ -0,0 +1,18 @@
export declare const soundMp3: {
'1': string;
'2': string;
'3': string;
'4': string;
'5': string;
'6': string;
'7': string;
'8': string;
'9': string;
'10': string;
'11': string;
'12': string;
'13': string;
'14': string;
'15': string;
};
//# sourceMappingURL=sounds-mp3.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sounds-mp3.d.ts","sourceRoot":"","sources":["../../../src/agents/Clippy/sounds-mp3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;CAAwmyB,CAAA"}

View File

@ -0,0 +1,18 @@
export declare const soundOgg: {
'1': string;
'2': string;
'3': string;
'4': string;
'5': string;
'6': string;
'7': string;
'8': string;
'9': string;
'10': string;
'11': string;
'12': string;
'13': string;
'14': string;
'15': string;
};
//# sourceMappingURL=sounds-ogg.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sounds-ogg.d.ts","sourceRoot":"","sources":["../../../src/agents/Clippy/sounds-ogg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;CAAigoF,CAAA"}

2
clippy/dist/agents/F1.js vendored Normal file

File diff suppressed because one or more lines are too long

1
clippy/dist/agents/F1.js.map vendored Normal file

File diff suppressed because one or more lines are too long

3
clippy/dist/agents/F1/agent.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
import { AgentConfig } from "../../types";
export declare const agent: AgentConfig;
//# sourceMappingURL=agent.d.ts.map

1
clippy/dist/agents/F1/agent.d.ts.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/F1/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WA8tDnB,CAAA"}

4
clippy/dist/agents/F1/index.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import { AgentWrapper } from '../../types';
declare const F1: AgentWrapper;
export default F1;
//# sourceMappingURL=index.d.ts.map

1
clippy/dist/agents/F1/index.d.ts.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/F1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,EAAE,EAAE,YAMT,CAAA;AAED,eAAe,EAAE,CAAC"}

34
clippy/dist/agents/F1/sounds-mp3.d.ts vendored Normal file
View File

@ -0,0 +1,34 @@
export declare const soundMp3: {
'1': string;
'2': string;
'3': string;
'4': string;
'5': string;
'6': string;
'7': string;
'8': string;
'9': string;
'10': string;
'11': string;
'12': string;
'13': string;
'14': string;
'15': string;
'16': string;
'17': string;
'18': string;
'19': string;
'20': string;
'21': string;
'22': string;
'23': string;
'24': string;
'25': string;
'26': string;
'27': string;
'28': string;
'29': string;
'30': string;
'31': string;
};
//# sourceMappingURL=sounds-mp3.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sounds-mp3.d.ts","sourceRoot":"","sources":["../../../src/agents/F1/sounds-mp3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAw9pG,CAAA"}

34
clippy/dist/agents/F1/sounds-ogg.d.ts vendored Normal file
View File

@ -0,0 +1,34 @@
export declare const soundOgg: {
'1': string;
'2': string;
'3': string;
'4': string;
'5': string;
'6': string;
'7': string;
'8': string;
'9': string;
'10': string;
'11': string;
'12': string;
'13': string;
'14': string;
'15': string;
'16': string;
'17': string;
'18': string;
'19': string;
'20': string;
'21': string;
'22': string;
'23': string;
'24': string;
'25': string;
'26': string;
'27': string;
'28': string;
'29': string;
'30': string;
'31': string;
};
//# sourceMappingURL=sounds-ogg.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sounds-ogg.d.ts","sourceRoot":"","sources":["../../../src/agents/F1/sounds-ogg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqx/P,CAAA"}

2
clippy/dist/agents/Genie.js vendored Normal file

File diff suppressed because one or more lines are too long

1
clippy/dist/agents/Genie.js.map vendored Normal file

File diff suppressed because one or more lines are too long

3
clippy/dist/agents/Genie/agent.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
import { AgentConfig } from "../../types";
export declare const agent: AgentConfig;
//# sourceMappingURL=agent.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/Genie/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WAA4pkE,CAAA"}

4
clippy/dist/agents/Genie/index.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import { AgentWrapper } from '../../types';
declare const Genie: AgentWrapper;
export default Genie;
//# sourceMappingURL=index.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/Genie/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,KAAK,EAAE,YAMZ,CAAA;AAED,eAAe,KAAK,CAAC"}

View File

@ -0,0 +1,17 @@
export declare const soundMp3: {
'1': string;
'2': string;
'3': string;
'4': string;
'5': string;
'6': string;
'7': string;
'8': string;
'9': string;
'10': string;
'11': string;
'12': string;
'13': string;
'14': string;
};
//# sourceMappingURL=sounds-mp3.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sounds-mp3.d.ts","sourceRoot":"","sources":["../../../src/agents/Genie/sounds-mp3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAAiw8B,CAAA"}

View File

@ -0,0 +1,17 @@
export declare const soundOgg: {
'1': string;
'2': string;
'3': string;
'4': string;
'5': string;
'6': string;
'7': string;
'8': string;
'9': string;
'10': string;
'11': string;
'12': string;
'13': string;
'14': string;
};
//# sourceMappingURL=sounds-ogg.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sounds-ogg.d.ts","sourceRoot":"","sources":["../../../src/agents/Genie/sounds-ogg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAA+h7F,CAAA"}

2
clippy/dist/agents/Genius.js vendored Normal file

File diff suppressed because one or more lines are too long

1
clippy/dist/agents/Genius.js.map vendored Normal file

File diff suppressed because one or more lines are too long

3
clippy/dist/agents/Genius/agent.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
import { AgentConfig } from "../../types";
export declare const agent: AgentConfig;
//# sourceMappingURL=agent.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/Genius/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WAA03hF,CAAA"}

4
clippy/dist/agents/Genius/index.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import { AgentWrapper } from '../../types';
declare const Genius: AgentWrapper;
export default Genius;
//# sourceMappingURL=index.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/Genius/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,MAAM,EAAE,YAMb,CAAA;AAED,eAAe,MAAM,CAAC"}

Some files were not shown because too many files have changed in this diff Show More