text:
# MWC-wallet coinjoin pool

In a context of a low number of on chain transactions, Dandelion is not really effective. To improve privary, MWC-wallet will do a coinjoin at wallet level.  MWC-wallet will talk with other participating mwc-wallets and built a 'multikernel' transaction.

The mwc-wallet coinjoin will take some time to process in order to capture enough transactions from honest wallet participants.

This method can allow to obfuscate regular transactions, but it's not the primary use case for multiple reasons. In case of Non interactive transactions (NIT) it will be used more easily for regular transactions.

## Checking traceability of the outputs.

The mwc-wallet will inspect the blocks and indentify the outputs that are potentially traceable.
It will assume outputs are untraceable if the block contain multiple transactions (more then T kernels and T outputs)
Value of T need to be defined by user, more is better. Value of 5 should give good privacy assuming no observer was tracking transactions from mempool in the past.

Over a certain time period, because of the cut-though, the number of kernels and outputs will decline. Because of that
wallet will need to track it's old outputs and periodically spend them. The time period will depend on network activity. *** @Suem can confirm

## Coinjoin pool overview

To build the coinjoin transaction, multiple participants should exchange with it's own transactions in a way, so none of them will be able to learn
all information about the peers. Here the proposed workflow:

1. Wallet start listening on CoinJoin messages and advertise that it is ready to participate. Part
   of advertisement should be the number of expected coinjoin transactions (T).
2. Listening to the traffic will allow to learn information about other participants and detect who behave honestly.
3. Over time each participant will be able to build a pool of participants who agree to build a transaction with the same T value.
4. Because T is known, the expected number of participants can be selected as T*2 and any wallet can start the building the transaction.
   The first few participants will pay less fees. For example for T=5 and, of participants 10, assuming all transactions has 1 input, 1 output and 1 kernel,
   the fees will looks like: `0.000,  0.001,  0.002, 0.003, 0.005, 0.007, 0.008, 0.008, 0.008, 0.008` So the first participant
   will pay nothing, second will pay 0.001 MWC, the last four will pay 0.008 each. The fees values can vary because participants can include
   any transactions without limitations. But it is important to understand that first participants are paying much smaller fees then the rest of the pool.
5. The initiator will build a transaction, for example it can include a self transaction. Select the random participant and send encrypted message to him.
6. Whoever gets the message, will add it's own transaction and aggregate the result. After aggregation it will be impossible to learn
   how to trace inputs/outputs. Then another participant will be selected and aggregated transaction will be sent.
7. Eventually all 10 participants will be able to add inputs/outputs and result of aggregation will be posted to the network.
   For mwc network it is be a regular coinjoin multikernel transaction.

If some of participants are dishonest, others will be able to learn that fact by observing the traffic, remove him
from the Coinjoin pool and retry. With every attempts to create a coinjoin transaction, all participants need to be regenerated outputs.

Please note, there are some natural features of this method:
- Any participant can publish any transaction. But for every publishing attempt all outputs needs to be regenerated (if outputs are not regenerated then
  attacker can learn dependency between inputs and outputs).
- On every step, the aggregated transaction can be verified and published if participant willing to add enough fees.
- Second half of participants (in our example 6-10) can publish transaction and for the all group who already participate in CoinJoin that will be
  successful transaction because T value is met. As a result, if really needed, any of those participants can publish Coinjoin transaction with
  guarantee result. None of attacker will be able to interrupt them.

## Messages

Using the libp2p, there will be 3 type of messages:

##### I am online - message 1:
```
{
    "T" : [5,6,10]
    "position" : 0.2
    "pub_key" : "834756342987563429867458654738947356"
}
```
This message contain just a public key of the wallet that want to participate in coinjoin. For privacy and usuability this PubKey can be one time
temporary key not related to the wallet seed or anything else. Position is needed for desired position in the group. Other participants might respect that,
but still there is no guarantee that it will be satisfied.

Implicitly it will have p2p node ID. Only TOR wallet can join P2P network so no data about the wallet is leaked.

##### Instructions - message 2:
```
{
    "nonce" :<PHONE_NUMBER>56443,
    "recipient" : "rehjtgreioufgdh",  // pub_key  Hash
    "instructions" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
```
This message has the instructions that is added by somebody and encrypted with Diffie Hellman. Recipient with public key will be able to read the data.

Data is a multikernel transaction that is expected to be updated with additional data.

##### Attack complain - message 3:
```
{
    "message_ID" : "XXXXXXXXXXXXXXXXXXX",
    "nonce" :<PHONE_NUMBER>56443,
    "recipient" : "rehjtgreioufgdh",  // pub_key  Hash
    "secret" : "XXXXXXXXXXXXXXXXXXX"
    "new_pub_key" : "XXXXXXXXXXX"
}
```
This message can be published to proof that the sender of the faulted message ID was a non honest participant. To proof that, the wallet will need
to reveal the secret for it's public key. So everybody will be able to read the faulted message and confirm the participant was non honest and remove it from the coinjoin partipants list.
As a result, the node will need to switch to another public key. Since that public key is not attacked to anything, it is possible to do.

## MWC-Wallet coinjoin workflow.

T - number of expected coinjoined transactions Example: 5

1. Periodically wallet is checking if some of it's outputs are traceable. If at least one is, the wallet goes to the next step.
2. Wallet build a self spend transaction using the identified traceble outputs.
    - Note, instead of only self spend outputs, the wallet can include any transaction like a regular payment.
3. Wallet joining the libp2p Pub/Sub topic 'CoinJoin' and listening on it.
4. Every 5 minutes the wallet is posting 'I am online message' with it's freshly generated Dalek PubKey to 'CoinJoin' topic.
5. Wallet is listening on 'CoinJoin' and collecting the data
    - if it receive 'I am online - message 1', the list of active wallets PubKey is updated. If list of active wallet is 3x T, then wallet can initiate publishing of it's own transaction.
    - if it getting 'Instructions - message 2', wallet can decode it, validate transactions. If transaction partly published to blockchain by bad actor, **we drop it (mission failed, need to retry)**. Otherwise go to step 7.
6. When wallet collected enough 2x T transactions to publish, including it's own, it will publish all of them. **The mission is successfull** for all participants.
7. If wallet gets 'Instructions - message 2' with it's own transaction, the message will be republished to any 'random' peer (see below how to select honest random peer).
   Because PubKey is known, the message can be encrypted with Diffie Hellman.
8. If wallet gets 'Instructions - message 2' without transaction to mix, the message will be enriched with it's own transaction and republished
   to random peer.
9. Periodically wallet checking if his transactions are published to the blockchain. If it found at Tx Node, **the mission is successfull**

Note, every 'add transaction' requires to do kernel offset. As a result the disaggregation will be impossible.

Note, the first participant will pay smaller fee the the last one.

## Attacking

Attacker can pursue different goals. Let's check what attacker can do.

#### Make joining inefficient by publishing too early.

Attacker can advertise many wallets and every time his wallets are selected, he publish the transactions to blockchain without including expected number of participants.
As a result, a weak CoinJoin occurs.

Prevention:
If value of T is consensus, then starting participant can pay smaller fee, the next one will pay more to make the sum expected value.
The node will need to reject smaller fee transactions (will need to check the code). If T is 5, then the for 5x2=10 participants (one input, one output per transaction) fees can be
0.000,  0.001,  0.002, 0.003, 0.005, 0.007, 0.008, 0.008, 0.008, 0.008  (the average fee is 0.005, the sum of all fees have to be 0.05 in order to publish on chain)

As a result, attacker will need at least to add another transaction to pay the remaining mining fees. Honest coinjoin participants
wallet will later found the undesired outputs traceability value and will automatically retry. But attacker will keep
paying fees. As a result that will be costly for attacker to do that.

#### Make joining inefficient by dropping everything.

Dropping all request will prevent the Join happen normally.

In this case the wallet can keep tracking of traffic and blacklist p2p nodes that didn't answered. Eventually it will build a black list.
Attacker will need to change the p2p guids. But in this case the wallet will prefer the peers that longer staying online, so attacker node will be out for the session.
<br/>We can proof that eventually all attacker nodes will be detected and only the honest odes will be left.

#### Observing

Attacker can just observe the transaction before merge and try to build input/output mapping.

That will be relatively hard because:
1. Observer will need to behave as honest node. It should at least republish the traffic because otherwise other wallets will black list it.
2. If there are many observers, then observers will need to participate by including it's own transactions. That will be cost fees.
3. Because of 1 and 2, it is possible to have relatively small numbers of observers. As a result instead of T transactions, observer might spot
   smaller number of the merged transactions. But in this case that still ok. Some fraction of outputs can be observed, but
   it is not enough to build the graph who-pay-who. Probability will be very low.

#### Frame other players

Attacker can always send badly encrypted message to the next peer. As a result this player will look as honest one, but another player will
looks like it dropping the request.
Another alternative, attacker can send the garbage, the result still will be the same. Because traffic encrypted, that will be impossible to validate.

The mitigation to that - posting 'Attack complain - message 3'. The node can reveal it's secret, so everybody can learn who is attacker.
As a result of such coming out, the node will need to change it's public key. But because other players will see that, the reputation can be kept.

# Changes

Here we will track description of the changes at the projects, it will be easier to review teh code.

repository: mwcproject/mwc-node

gha_language: Rust

repo_name: mwcproject/mwc-node


text:
# [DEPRECATED] Google Drive Android API Demos

The Drive Android API used in this sample is now deprecated. Please see the
[migration guide](https://developers.google.com/drive/android/deprecation)
for more information.

---

Google Drive Android API Demos app illustrates all possible ways to talk to
Drive service with the use of interfaces available in [Google Play
Services](http://developer.android.com/google/play-services). The calls
illustrated within the app are:

### Listing and querying
* [List files with pagination](app/src/main/java/com/google/android/gms/drive/sample/demo/ListFilesActivity.java)
* [Query files](app/src/main/java/com/google/android/gms/drive/sample/demo/QueryFilesActivity.java)

### Working with files and folders
* [Create a file](app/src/main/java/com/google/android/gms/drive/sample/demo/CreateFileActivity.java)
* [Create a file in App Folder](app/src/main/java/com/google/android/gms/drive/sample/demo/CreateFileInAppFolderActivity.java)
* [Create a folder](app/src/main/java/com/google/android/gms/drive/sample/demo/CreateFolderActivity.java)
* [Retrieve metadata](app/src/main/java/com/google/android/gms/drive/sample/demo/RetrieveMetadataActivity.java)
* [Retrieve contents](app/src/main/java/com/google/android/gms/drive/sample/demo/RetrieveContentsActivity.java)
* [Listen download progress](app/src/main/java/com/google/android/gms/drive/sample/demo/RetrieveContentsWithProgressDialogActivity.java)
* [Edit metadata](app/src/main/java/com/google/android/gms/drive/sample/demo/EditMetadataActivity.java)
* [Delete a file](app/src/main/java/com/google/android/gms/drive/sample/demo/DeleteFileActivity.java)
* [Edit contents](app/src/main/java/com/google/android/gms/drive/sample/demo/EditContentsActivity.java)
* [Pin file to the device](app/src/main/java/com/google/android/gms/drive/sample/demo/PinFileActivity.java)

### Intents
* [Create a file with creator activity](app/src/main/java/com/google/android/gms/drive/sample/demo/CreateFileWithCreatorActivity.java)
* [Pick a file with opener activity](app/src/main/java/com/google/android/gms/drive/sample/demo/PickFileWithOpenerActivity.java)
* [Pick a folder with opener activity](app/src/main/java/com/google/android/gms/drive/sample/demo/PickFolderWithOpenerActivity.java)

### Hierarchical operations
* [Create a file in a folder](app/src/main/java/com/google/android/gms/drive/sample/demo/CreateFileInFolderActivity.java)
* [Create a folder in a folder](app/src/main/java/com/google/android/gms/drive/sample/demo/CreateFolderInFolderActivity.java)
* [List files in a folder](app/src/main/java/com/google/android/gms/drive/sample/demo/ListFilesInFolderActivity.java)
* [Query files in a folder](app/src/main/java/com/google/android/gms/drive/sample/demo/QueryFilesInFolderActivity.java)

### Others
* [Authorization, authentication and client connection](app/src/main/java/com/google/android/gms/drive/sample/demo/BaseDemoActivity.java)
* [Synchronous requests](app/src/main/java/com/google/android/gms/drive/sample/demo/SyncRequestsActivity.java)
* [Listen for metadata and contents change events](app/src/main/java/com/google/android/gms/drive/sample/demo/events/ListenChangeEventsForFilesActivity.java)

## Can I run this app?

If you actually want to run this sample app (though it is mostly provided so you
can read the code), you will need to register an OAuth 2.0 client for the
package `com.google.android.gms.drive.sample.demo` with your own debug keys.
See instructions in the [Getting Started guide](https://developers.google.com/drive/android/get-started).

![Home Screen](images/demos_home.png)

![Analytics](https://ga-beacon.appspot.com/UA-46884138-1/android-demos?pixel)

repository: googleworkspace/android-samples

branch_name: refs/heads/master

extension: md

gha_language: Java

license_type: permissive

repo_name: googleworkspace/android-samples


text:
# Extended Stats Bucket Aggregation

> More info about extended stats bucket aggregation is in the [official elasticsearch docs][1]

This aggregation provides a few more statistics (sum of squares, standard deviation, etc) compared to the stats_bucket` aggregation.

## Simple example

```JSON
{
    "aggs" : {
        "sales_per_month" : {
            "date_histogram" : {
                "field" : "date",
                "interval" : "month"
            },
            "aggs": {
                "sales": {
                    "sum": {
                        "field": "price"
                    }
                }
            }
        },
        "stats_monthly_sales": {
            "extended_stats_bucket": {
                "buckets_paths": "sales_per_month>sales"
            }
        }
    }
}
```

And now the query via DSL:

```php
$search = new Search();

$dateAggregation = new DateHistogramAggregation('sales_per_month', 'date', 'month');
$dateAggregation->addAggregation(
    new SumAggregation('sales', 'price')
);

$search->addAggregation($dateAggregation);
$search->addAggregation(
    new ExtendedStatsBucketAggregation('stats_monthly_sales', 'sales_per_month>sales')
);

$aggArray = $search->toArray();
```

[1]: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-extended-stats-bucket-aggregation.html

license: MIT

repository: handcraftedinthealps/ElasticsearchDSL

gha_language: PHP

gha_license_id: MIT

repo_name: handcraftedinthealps/ElasticsearchDSL


text:
# Layout Elements

Layout elements are different from components in that they do not directly consume XVIZ stream data.
Layout elements provide information about how to arrange components as well as additional
information about their contents.

## Panels

Panels are typically grouped together in tabs along the edge of an application. Panels group
together related pieces of data at a high level. Panels provide a convenient way for a team to group
all of their data together.

_TODO: screentshot: panel from streetscape.gl demo app_

| **Name**       | **Type**                       | **Description**                                                                                |
| -------------- | ------------------------------ | -------------------------------------------------------------------------------------------------------- |
| `name`         | `string`                       | The name of this panel, will be displayed at the top of the panel                                        |
| `layout`       | `layout_type`                  | One of the supported layout types; defines how the elements inside of the panel should be arranged.      |
| `interactions` | `list<interaction_type>`       | A list of all of the interactions supported by this panel.                                               |
| `children`     | `list<component OR container>` | All of the components and containers inside of this panel and the order in which they should be rendered |

## Containers

Containers are used to group components together into logical groupings of information that should
be displayed together. To some extent, they can be thought of as HTML `<div>`s. Components within
the container will be rendered above any other containers that are nested inside of the container.

_TODO: screentshot: panel with containers from streetscape.gl demo app_

| **Name**       | **Type**                       | **Description**                                                                                |
| -------------- | ------------------------------ | -------------------------------------------------------------------------------------------------------- |
| `name`         | `string`                       | The name of this container, will be displayed at the top of the container                                |
| `layout`       | `layout_type`                  | One of the supported layout types; defines how the elements inside of the panel should be arranged.      |
| `interactions` | `list<interaction_type>`       | A list of all of the interactions supported by this panel.                                               |
| `children`     | `list<component OR container>` | All of the components and containers inside of this panel and the order in which they should be rendered |

repository: hookex/xviz

gha_language: JavaScript

repo_name: hookex/xviz


text:
# Ufo Game

A simple Ufo Game for absolute beginners based on Unity's [2D UFO Tutorial](https://unity3d.com/de/learn/tutorials/projects/2d-ufo-tutorial)

### Run game

- Clone or download the repository.
- Run `DualityEditor.exe`, let it grab some binaries it needs.
- Close it and run `DualityLauncher.exe`

## Screenshots

[![](http://i.imgur.com/ZjA1a6f.png)

repository: ChristianGreiner/duality-samples

gha_language: C#

repo_name: ChristianGreiner/duality-samples


text:
Deploy from Content Library

* Get Authentication Token https://isjw.uk/powershell-and-rest-api-create-vm/
* List Libraries
* List Library Items
    * Identify OVF item
* Query OVF Package https://code.vmware.com/apis/62/vcenter-management#!/ovf%2Flibrary_item_/post_com_vmware_vcenter_ovf_library_item_id_ovf_library_item_id_~action_filter
    * Get Folder ID
    * Get Host ID
    * Get Resource Pool ID
* Deploy OVF Package https://code.vmware.com/apis/62/vcenter-management#!/ovf%2Flibrary_item_/post_com_vmware_vcenter_ovf_library_item_id_ovf_library_item_id_~action_deploy
    * Populate deployment_spec https://vdc-repo.vmware.com/vmwb-repository/dcr-public/d87b0863-0ebd-4ec7-b032-40398c7fded9/0acea89e-2bd1-4251-bf4c-b03275f964a7/VMware-vCloud-Suite-SDK-REST-6.0.0/docs/apidocs/structures/com/vmware/vcenter/ovf/LibraryItem/resource_pool_deployment_spec-structure.html
    * Populate target
    *

repository: sammcgeown/vSphere-Content-Library

repo_name: sammcgeown/vSphere-Content-Library


text:
React Component Example for TypeScript.
===

Create a project for the React component library containing a website preview of the component library instance. The documents and component libraries are put into a project, all written in `TypeScript`, the component library source files are added to the `src` directory, and the document website source files are added to the `website` directory.

## Open in CodeSandbox

[![Open in CodeSandbox](https://img.shields.io/badge/Open%20in-CodeSandbox-blue?logo=codesandbox)](https://codesandbox.io/s/github/jaywcjlove/example/react-component-tsx)

## Quick Start

```bash
npm install
```

**development**

Runs the project in development mode.

```bash
# Step 1, run first, listen to the component compile and output the .js file
# listen for compilation output type .d.ts file
npm run watch
# Step 2, development mode, listen to compile preview website instance
npm run start
```

**production**

Builds the app for production to the build folder.

```bash
npm run build
```

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

repository: jaywcjlove/tsbb

gha_language: TypeScript

repo_name: jaywcjlove/tsbb


text:
## Project requirements

## Available Scripts

### Install app dependencies
`npm install`

### Starting the app in development mode
`npm start`

### Creating app executable

`npm run build`

repository: neboprokic/dicom

branch_name: refs/heads/main

repo_name: neboprokic/dicom


text:
# RWL-Icon

Program reduce boolean funtions.

Created for AGH course in Icon programing language.

Assigment description can be found [here](RWL-2017.pdf)


text:
### Changelog

All notable changes to this project will be documented in this file. Dates are displayed in UTC.

#### [v2.5.2](https://github.com/izelnakri/memserver/compare/v2.5.2...v2.5.2)

- release @memserver/cli last [`22dfa3b`](https://github.com/izelnakri/memserver/commit/22dfa3b25b364af2d22b33d9594bb1256619630c)

#### [v2.5.2](https://github.com/izelnakri/memserver/compare/v2.5.1...v2.5.2)

> 14 June 2021

- Release 2.5.2 [`bcfa874`](https://github.com/izelnakri/memserver/commit/bcfa8749ec13c945fae65d4790561649c2ff1db6)
- add jsdom to @memserver/server [`5bc6bd9`](https://github.com/izelnakri/memserver/commit/5bc6bd928671a266ef416bdbe216be18cf295839)

#### [v2.5.1](https://github.com/izelnakri/memserver/compare/v2.5.0...v2.5.1)

> 14 June 2021

- Bump actions/cache from 2 to 2.1.5 [`#230`](https://github.com/izelnakri/memserver/pull/230)
- Bump docker/login-action from 1 to 1.9.0 [`#229`](https://github.com/izelnakri/memserver/pull/229)
- Bump docker/setup-buildx-action from 1 to 1.3.0 [`#231`](https://github.com/izelnakri/memserver/pull/231)
- Bump actions/checkout from 2 to 2.3.4 [`#232`](https://github.com/izelnakri/memserver/pull/232)
- Bump docker/build-push-action from 2 to 2.4.0 [`#233`](https://github.com/izelnakri/memserver/pull/233)
- update examples to @memserver pkgs [`a50c4a0`](https://github.com/izelnakri/memserver/commit/a50c4a017a738196f9a7617df94c673b2ca56dfa)
- Release 2.5.1 [`2d47968`](https://github.com/izelnakri/memserver/commit/2d47968840d19197084d4740697d7e5c7badc58c)
- remove esbuild dep from cli [`3d36d2c`](https://github.com/izelnakri/memserver/commit/3d36d2c89ef9093b29f94fa55cdc28e2c5955809)

#### [v2.5.0](https://github.com/izelnakri/memserver/compare/v2.4.0...v2.5.0)

> 14 June 2021

- Release 2.5.0 [`00276d2`](https://github.com/izelnakri/memserver/commit/00276d21e8a488a45f725624db4315a20725ce0c)
- release micro packages [`ccfac8c`](https://github.com/izelnakri/memserver/commit/ccfac8c65e2b0c2aa166c65442fedcee58542549)

#### [v2.4.0](https://github.com/izelnakri/memserver/compare/v2.3.9...v2.4.0)

> 14 June 2021

- Workspaces(@memserver/model, @memserver/server) [`#235`](https://github.com/izelnakri/memserver/pull/235)
- Release 2.4.0 [`8f31cc1`](https://github.com/izelnakri/memserver/commit/8f31cc1b28775d5654f0afbd17fd4c1af1602e8d)

#### [v2.3.9](https://github.com/izelnakri/memserver/compare/v2.3.8...v2.3.9)

> 5 April 2021

- upgrade jsdom to 16.5.2 [`b09a1ab`](https://github.com/izelnakri/memserver/commit/b09a1abf25d61e6f08fa5daf8afb16a427993182)
- Release 2.3.9 [`7eb4b6b`](https://github.com/izelnakri/memserver/commit/7eb4b6bfbe80610a024a2ca301ae67b8086c97da)

#### [v2.3.8](https://github.com/izelnakri/memserver/compare/v2.3.7...v2.3.8)

> 5 April 2021

- packages upgraded [`56dd91d`](https://github.com/izelnakri/memserver/commit/56dd91d4dc5469ba26213c484da3b0883779e765)
- TODO upgrade for v2 thoughts [`426bb37`](https://github.com/izelnakri/memserver/commit/426bb370208d7534eaa7f2050bf9add82fca5be0)
- Release 2.3.8 [`29ba9d3`](https://github.com/izelnakri/memserver/commit/29ba9d319cfa32b1785b8963336b7a4f9b607592)
- rollup.config.js js styling [`d91c304`](https://github.com/izelnakri/memserver/commit/d91c304465fe946cc3eb5f7108f0c8fdff9cc121)

#### [v2.3.7](https://github.com/izelnakri/memserver/compare/v2.3.6...v2.3.7)

> 6 January 2021

- Revert strange internal test failure [`9679cea`](https://github.com/izelnakri/memserver/commit/9679cea195facff76d45370fc6ce5cda2ea69d9b)
- Release 2.3.7 [`fc83b61`](https://github.com/izelnakri/memserver/commit/fc83b61a67e2cac70557efaa28afaa45be3ddca3)

#### [v2.3.6](https://github.com/izelnakri/memserver/compare/v2.3.6-beta.0...v2.3.6)

> 6 January 2021

- internal pkg-upgrades [`469dd79`](https://github.com/izelnakri/memserver/commit/469dd79e1bc378f288df41e7c0cb154fae3a8c83)
- Release 2.3.6 [`1cecf82`](https://github.com/izelnakri/memserver/commit/1cecf82ea1b95fa1efe2cf76e53a7235954c5b9c)
- add more npm scripts [`7fb5953`](https://github.com/izelnakri/memserver/commit/7fb5953c1e760f5aa522929efc9d88f12db2e1a9)
- README.md typofixes [`121ece4`](https://github.com/izelnakri/memserver/commit/121ece4b6ec4bcc0fc7d3c8a68e6f808419c09a7)
- remove a redundant variable on src/utils.ts func [`494a16e`](https://github.com/izelnakri/memserver/commit/494a16e73c12794c55f48879190cd72994f1bdf6)
- remove redundant { classify } imports [`9d2baff`](https://github.com/izelnakri/memserver/commit/9d2baff30215b4e3cc57f552f1ad528a7cb56045)

#### [v2.3.6-beta.0](https://github.com/izelnakri/memserver/compare/v2.3.5...v2.3.6-beta.0)

> 6 December 2020

- Release 2.3.6-beta.0 [`00da13e`](https://github.com/izelnakri/memserver/commit/00da13edc16174c7741dd1e7682cc22e3795a894)

#### [v2.3.5](https://github.com/izelnakri/memserver/compare/v2.3.4...v2.3.5)

> 6 December 2020

- Release 2.3.5 [`2c84b08`](https://github.com/izelnakri/memserver/commit/2c84b085d9a858cb9e18776008adc8203693faf5)
- github release notes trial [`2737e26`](https://github.com/izelnakri/memserver/commit/2737e26b79bb85bc15b7edb41feb4006e2249fe1)

#### [v2.3.4](https://github.com/izelnakri/memserver/compare/v2.3.3...v2.3.4)

> 6 December 2020

- use auto-changelog again [`e4ec929`](https://github.com/izelnakri/memserver/commit/e4ec9297f884b7f8f88dafeed2fd62c9ee65ed84)
- Release 2.3.4 [`f1c47e7`](https://github.com/izelnakri/memserver/commit/f1c47e7a6574e802e5a6eb8d386e4d2e780d91ce)
- Release 2.3.3 [`47cbed3`](https://github.com/izelnakri/memserver/commit/47cbed3837f4bd90df40f9353f6b7e977656afc5)

#### [v2.3.3](https://github.com/izelnakri/memserver/compare/v2.3.2...v2.3.3)

> 6 December 2020

- lerna-changelog added [`#224`](https://github.com/izelnakri/memserver/pull/224)
- CI moved to github registry [`#222`](https://github.com/izelnakri/memserver/pull/222)
- github actions added [`#221`](https://github.com/izelnakri/memserver/pull/221)
- CHANGELOG added [`e715123`](https://github.com/izelnakri/memserver/commit/e7151239c832d86a0bdbc2278a436db28a64198a)
- Release 2.3.3 [`d20c56f`](https://github.com/izelnakri/memserver/commit/d20c56fffe4401d44bad6a203f3e73f9ee644943)
- circleci badged replaced with github actions [`3235a10`](https://github.com/izelnakri/memserver/commit/3235a109689b7e2a65ab35f0331d2909b2e56fa6)

#### [v2.3.2](https://github.com/izelnakri/memserver/compare/v2.3.0...v2.3.2)

> 1 December 2020

- add release-it changelog [`969b148`](https://github.com/izelnakri/memserver/commit/969b1489510bc5ec1e05bc76e132025b89ce0d5b)
- eslint removed [`483c704`](https://github.com/izelnakri/memserver/commit/483c70424c0e54e28005bb3cc31aec3695d0b3af)
- move babel and prettier to package.json [`dbd00e5`](https://github.com/izelnakri/memserver/commit/dbd00e5528509759cdcf15a8df74e0d898a46b73)
- v2.3.1 pretender request body parse optimization [`a0d6ca8`](https://github.com/izelnakri/memserver/commit/a0d6ca8b23a57ea7e9f8d123c6f999503995a874)
- Release 2.3.2 [`2eb5566`](https://github.com/izelnakri/memserver/commit/2eb5566855ff959e06a2695e1cbd4ce27e95fe3b)

#### [v2.3.0](https://github.com/izelnakri/memserver/compare/v2.1.0...v2.3.0)

> 29 November 2020

- removed 'qs' package [`#216`](https://github.com/izelnakri/memserver/pull/216)
- v2.1.3 node@15 support, fs-extra dep rm [`#215`](https://github.com/izelnakri/memserver/pull/215)
- Bump mber from 0.13.2 to 0.13.10 [`#174`](https://github.com/izelnakri/memserver/pull/174)
- [Security] Bump node-fetch from 2.6.0 to 2.6.1 [`#178`](https://github.com/izelnakri/memserver/pull/178)
- Bump @babel/cli from 7.10.5 to 7.12.8 [`#210`](https://github.com/izelnakri/memserver/pull/210)
- Bump @babel/core from 7.11.4 to 7.12.9 [`#211`](https://github.com/izelnakri/memserver/pull/211)
- Bump @types/node from 14.6.0 to 14.14.10 [`#212`](https://github.com/izelnakri/memserver/pull/212)
- Bump ava from 3.11.1 to 3.13.0 [`#185`](https://github.com/izelnakri/memserver/pull/185)
- v2.1.2 dev pkg upgrades [`9f2a321`](https://github.com/izelnakri/memserver/commit/9f2a3213e9ce5543ff6cda6a80be439e53f90793)
- v2.1.1 pkg upgrades, inflected pkd rm [`0c8b862`](https://github.com/izelnakri/memserver/commit/0c8b8623bac75a2f452c244c6e8d19c6379c3e27)
- added server API to README [`cbcaf60`](https://github.com/izelnakri/memserver/commit/cbcaf605e6f40672e5bfbc1d0dcfa842834989b5)
- more docs and mirage diff explanations to README.md [`1d4a33a`](https://github.com/izelnakri/memserver/commit/1d4a33a1d58e2a015921cca6b66e1550a669060c)
- MemServer init API added to README [`6b68ce6`](https://github.com/izelnakri/memserver/commit/6b68ce69e22ec2c9b1f8d55ca44ab5317eab176c)
- TODO and small README adjustment [`057810e`](https://github.com/izelnakri/memserver/commit/057810ef3ab19751bae8438565a92a120d221e0e)
- v2.2.3 stable cli release [`432ace9`](https://github.com/izelnakri/memserver/commit/432ace9e2da1957487256c5a150d120e4da78739)
- README update: why its superior to Mirage [`7fa0498`](https://github.com/izelnakri/memserver/commit/7fa0498c04844873535fa3317bea6cdc8f4441f1)
- README.md [`09cee2a`](https://github.com/izelnakri/memserver/commit/09cee2a5c681e58cf9caa9e99b739dd71882a7e9)
- README.md update [`b0ae605`](https://github.com/izelnakri/memserver/commit/b0ae605674334a3fbea7aa24d4a629c03d552b2b)
- examples dir dependencies updated [`4d2954f`](https://github.com/izelnakri/memserver/commit/4d2954f84f74ac29e8edc6a2851c74ec7ce427a0)
- v2.2.0 memserver cli with volta [`40572de`](https://github.com/izelnakri/memserver/commit/40572de40daff966e5dad175d1ada529928e0969)
- small typefix and package.json build step [`d3c0ca3`](https://github.com/izelnakri/memserver/commit/d3c0ca333494681ba2472e5f0345038f282a0729)
- v2.3.0 release 'qs' pkg removed [`3a5063b`](https://github.com/izelnakri/memserver/commit/3a5063b516b00a7056ccb4dfe882d8c8ec3b7165)
- v2.2.4 redundant array gen removed from serialize [`9bf3184`](https://github.com/izelnakri/memserver/commit/9bf3184a1a057ac5e53de08be182c729ae938dc3)
- v2.2.5 src/test removed from npm install [`34241f6`](https://github.com/izelnakri/memserver/commit/34241f61904733ab95317164a3e9f58d0b88b31e)
- small redundant model code removed [`c77bc38`](https://github.com/izelnakri/memserver/commit/c77bc389c4ac628b0279f2a814573061ab20b61f)

#### [v2.1.0](https://github.com/izelnakri/memserver/compare/v2.0.12...v2.1.0)

> 22 August 2020

- Dynamic default attributes [`#161`](https://github.com/izelnakri/memserver/pull/161)
- packages upgraded [`555be9f`](https://github.com/izelnakri/memserver/commit/555be9f673f951fb085134c7489fce368a9a733e)
- sketch for the dynamic defaultAttributes, slows down alot [`7047602`](https://github.com/izelnakri/memserver/commit/7047602c2847294d3f6df373f4a5f794d3cc2a24)
- final dynamic $Model.defaultAttributes feature [`1360d0d`](https://github.com/izelnakri/memserver/commit/1360d0d10decf1c371b510d801a833e28bc90dd4)
- example adjustment and styling on few tests [`368b7c7`](https://github.com/izelnakri/memserver/commit/368b7c77a00fb857d048ce9ccd9a9c77af570cf6)
- acceptable insert algorithm with dynamic defaultAttributes [`d934e83`](https://github.com/izelnakri/memserver/commit/d934e8322d68d012b6811c793ce9181147e324f8)
- remove few model temp variables on queries [`3cdcd3b`](https://github.com/izelnakri/memserver/commit/3cdcd3bbfb526148178599fb26558503e50b7cf4)
- small bugfix and type fix [`d3b16c4`](https://github.com/izelnakri/memserver/commit/d3b16c44f9961ac31bb2b660e27e48fa4667c0f1)
- small insert optimization [`480d7fe`](https://github.com/izelnakri/memserver/commit/480d7fe7cc1985db5c40c704509a16e7bb832774)

#### [v2.0.12](https://github.com/izelnakri/memserver/compare/v2.0.10...v2.0.12)

> 21 March 2020

- packages upgraded [`#69`](https://github.com/izelnakri/memserver/pull/69)
- v0.2.11 package updates and small fixes [`27a043f`](https://github.com/izelnakri/memserver/commit/27a043ffe29c47dd207c35878170b407370df7e5)
- fastboot upgraded [`d80bb5a`](https://github.com/izelnakri/memserver/commit/d80bb5a6cd0f2f4af027327d7c75423e42981b52)
- README.md updated for memserver model API [`d7a46d2`](https://github.com/izelnakri/memserver/commit/d7a46d2e3c2bed301595bbef5c9cc7b832211c7b)
- v0.2.12 release [`48a49c0`](https://github.com/izelnakri/memserver/commit/48a49c0c4ca41c8b6c6263e6b43ef452e7e47d8d)

#### [v2.0.10](https://github.com/izelnakri/memserver/compare/v2.0.9...v2.0.10)

> 16 February 2020

- packages updated [`ab7df76`](https://github.com/izelnakri/memserver/commit/ab7df76ffa2b0f99ba8ad0b64e16cc10c87d551b)
- v2.0.10 package upgrades [`34c624f`](https://github.com/izelnakri/memserver/commit/34c624f9291dec5513a99107977bbbad1663538c)

### [v2.0.9](https://github.com/izelnakri/memserver/compare/v1.2.9...v2.0.9)

> 16 February 2020

- all tests except cli tests are migrated to typescript [`69c80c1`](https://github.com/izelnakri/memserver/commit/69c80c1fe4931c7acd9dac4dca8879b487a1e4c0)
- first working memserver binary [`1a3249c`](https://github.com/izelnakri/memserver/commit/1a3249caac13f0683d8d18bedf36dbff0f6309db)
- FIRST WORKING EXAMPLE ON BROWSER [`5630b5b`](https://github.com/izelnakri/memserver/commit/5630b5bda0f0682cb644510e057f255ff5799764)
- typescript and ava setup [`5abe3d5`](https://github.com/izelnakri/memserver/commit/5abe3d511a985f6c64e23e849183c96c881ac734)
- Ready for 2.0.0-alpha release [`ea9dd42`](https://github.com/izelnakri/memserver/commit/ea9dd422d278fb02cb2fbb6dc3d044ee20f81e9b)
- npm linking ember-source packages magic [`be17bb9`](https://github.com/izelnakri/memserver/commit/be17bb9f359d9e40bfc1c2099c7fff4a615717cf)
- memserver/model ORM & serialization tests complete [`89a2802`](https://github.com/izelnakri/memserver/commit/89a280260011e762bc7894fb3b8f2775d50802aa)
- all CRUD tests complete for memserver models, awaiting json serialization tests [`08ebff2`](https://github.com/izelnakri/memserver/commit/08ebff215ddff776503019c64e12a532b911cc95)
- Memserver params and passthrough tests moved to typescript [`beee9b5`](https://github.com/izelnakri/memserver/commit/beee9b569495592a4b9419a1952717d6e066c32d)
- cli tests added, all tests migrated to typescript [`2381123`](https://github.com/izelnakri/memserver/commit/2381123f0a9b00b2b5d42df376011ce6024103c6)
- first working memserver/model tests along with implementation [`8bd4026`](https://github.com/izelnakri/memserver/commit/8bd4026b30025f34ec34a99610c939e5cd8b7298)
- /examples updated [`38a99cd`](https://github.com/izelnakri/memserver/commit/38a99cd2f384158ea741bb9e222fca81d9baa5c8)
- initial server modules and test setup [`54b6421`](https://github.com/izelnakri/memserver/commit/54b6421e220ad907459955b7ac81099cfd887cb3)
- new node API finalized with tests [`03b8330`](https://github.com/izelnakri/memserver/commit/03b8330f2cfe7b68301e8e4c49d6ccb8813fd6b9)
- v2.0.7 added selective default route handling and cli checks for memserver in js [`8b08697`](https://github.com/izelnakri/memserver/commit/8b08697321d84e52a2a18138e7c30cf84ef852cf)
- model.ts type annotation improvements and server/index.ts tests [`d46e841`](https://github.com/izelnakri/memserver/commit/d46e8418302ab283f39aac3ad5b6f5064eadc35c)
- Server tests complete [`1b2d7bf`](https://github.com/izelnakri/memserver/commit/1b2d7bf25d29ca082728c7163410c0acc0c48200)
- .gitignore fix [`4d14846`](https://github.com/izelnakri/memserver/commit/4d14846d29688870bfe8af43df8cf144e11b9515)
- ts-node setup [`064de74`](https://github.com/izelnakri/memserver/commit/064de740ccf19bc41cb7e7f5edf8ebc8af6016a0)
- Server configuration tests complete [`a524d1a`](https://github.com/izelnakri/memserver/commit/a524d1a7bb6d17f359a32d9ecfb0c29d04d8a232)
- initial publish script sketch [`f3e2326`](https://github.com/izelnakri/memserver/commit/f3e2326c4da704807c64089bbc234c4010b6e1de)
- boilerplate based memserver on new memserver API design [`edc2e5d`](https://github.com/izelnakri/memserver/commit/edc2e5d034b29f8ebf54aecb16b1fd5db15feb18)
- Basic cli tests added [`3d940f7`](https://github.com/izelnakri/memserver/commit/3d940f7d6916f0960e044814879d8fe731253bbb)
- node import implementation and very smart fixture injection and checks/resets on node imports [`fd83a0d`](https://github.com/izelnakri/memserver/commit/fd83a0dc6fa2521b41cd97f36aab24644c299003)
- MemServer server tests [`707cd8b`](https://github.com/izelnakri/memserver/commit/707cd8b12bc17797ce39305946933cfc78466a4b)
- all files added excep examples in old repo for full migration [`f7b630a`](https://github.com/izelnakri/memserver/commit/f7b630a246458fcd596c82976010c75530a509fb)
- Some smart wiring to expose models to window.$Model if needed [`6197a4c`](https://github.com/izelnakri/memserver/commit/6197a4cb8811a1d3c1775571ac188d7cba6e2e27)
- initial type annotation on 'memserver/model'; [`1f4847d`](https://github.com/izelnakri/memserver/commit/1f4847d5df7552598950ed57b07fe5ef5f6864d9)
- .circleci/config.yaml added [`11cc634`](https://github.com/izelnakri/memserver/commit/11cc63464bade948ed78ab134c055ff731ddb415)
- .npmignore optimizations [`46bb2ce`](https://github.com/izelnakri/memserver/commit/46bb2cee57adc7ddf66391c0734976569138f4c4)
- memserver-boilerplate and prettier added, tsconfig adjustments [`ee24c33`](https://github.com/izelnakri/memserver/commit/ee24c337feec531f131ec4f7dad47e61ae7f130c)
- tsc Dockerfile fix [`ea4488c`](https://github.com/izelnakri/memserver/commit/ea4488cb5f01a543c3ada5335f24d8be22e30a4e)
- v2.0.2 few optimizations for globalizeModels implementation [`ab60db8`](https://github.com/izelnakri/memserver/commit/ab60db809e76306636d784c5bc8ae9dfd972b325)
- Dockerfile added [`df2759a`](https://github.com/izelnakri/memserver/commit/df2759a0010674d377ac43fea93fc4d7b890f230)
- typescript moved to devDependencies for CI [`b4c2fe8`](https://github.com/izelnakri/memserver/commit/b4c2fe8e800f2e65a9969ac2305e90a364bd2974)
- CI update [`3a98716`](https://github.com/izelnakri/memserver/commit/3a9871616b493e83c7f4a7f4c62a7286821dbf25)
- v2.0.5 another bugfix for route shortcuts [`6090b0a`](https://github.com/izelnakri/memserver/commit/6090b0aeb11e132b7e1300826335cc5cbb234f09)
- type enchancements on $Model.find(params) [`d8c6a11`](https://github.com/izelnakri/memserver/commit/d8c6a114978f882430a7de363e796988d52ae8d0)
- v2.0.4 memserver constructor bugfix [`b1e7cab`](https://github.com/izelnakri/memserver/commit/b1e7cab1c2f12d07d304954930d712a862873125)
- Dockerfile fixes [`2371e0b`](https://github.com/izelnakri/memserver/commit/2371e0b73c5fd564419a499a1e2dd22641b7d5f8)
- v2.0.6 rollup bundle optimization [`38b611e`](https://github.com/izelnakri/memserver/commit/38b611e8ba622afa10c680fd797a66f1babdf2ea)
- v2.0.9 moved to new repo [`46962d1`](https://github.com/izelnakri/memserver/commit/46962d19c6477f592d093818d584767ee0270361)
- memserver repo updated [`1804d4f`](https://github.com/izelnakri/memserver/commit/1804d4fa483ea7e1b14f7c1da9d80ec63d79fdc1)
- Dockerfile should work for tests [`2b79043`](https://github.com/izelnakri/memserver/commit/2b790439b599e9f4d112f3cb54e0c5a6f5809805)

#### [v1.2.9](https://github.com/izelnakri/memserver/compare/v1.2.3...v1.2.9)

> 19 July 2019

- Package security upgrades [`#6`](https://github.com/izelnakri/memserver/pull/6)
- Package upgrades [`#5`](https://github.com/izelnakri/memserver/pull/5)
- packages upgraded [`c33f086`](https://github.com/izelnakri/memserver/commit/c33f086eaa50b5f2332ee26b3ce372e9577ccc21)
- v1.2.7 memserver package upgrade [`b005202`](https://github.com/izelnakri/memserver/commit/b005202df1c580bff0e03da6bfa20c0d16c23c96)
- 28th feb memserver package upgrades [`279baba`](https://github.com/izelnakri/memserver/commit/279baba6a01b1cec6fa3e9e2b789f55d933dec35)
- v1.2.4 package upgrades [`a1d5e5a`](https://github.com/izelnakri/memserver/commit/a1d5e5aff0d04433d2f9f4dbcaaec878ec5df3f9)
- tests fixed [`baa730c`](https://github.com/izelnakri/memserver/commit/baa730cbb614a58a752f3e32ff1c2a0ff308c45a)
- jsdom adjustment for tests [`1a40e68`](https://github.com/izelnakri/memserver/commit/1a40e685d1c4d292dc355019f478c07518a4732a)
- v1.2.6 package upgrades [`78fac95`](https://github.com/izelnakri/memserver/commit/78fac956a25ed2afab944792ef4f812e67cb4c59)
- all packages updated [`c10aa1a`](https://github.com/izelnakri/memserver/commit/c10aa1aa1c37be713e4a2f81970fe040f1e17f7c)
- pryjs removed [`59562a6`](https://github.com/izelnakri/memserver/commit/59562a6d6ee8e2dcdcc9e82877472c303795ccb7)
- utils tests commented out [`cb6cb26`](https://github.com/izelnakri/memserver/commit/cb6cb263bc5f8a446ea080d5421a1cc3b5678dcd)
- v1.2.9 release - security updates [`2ab2b75`](https://github.com/izelnakri/memserver/commit/2ab2b75eb65101575c684e12c8085680cd5061a0)
- jsdom downgraded [`115891a`](https://github.com/izelnakri/memserver/commit/115891adee4b0239a05a1ae0e25ef3dfa69455f1)

#### v1.2.3

> 26 October 2018

- v1.2.2 jsdom downgrade to fix fastboot compliance [`#3`](https://github.com/izelnakri/memserver/pull/3)
- Package upgrades [`#2`](https://github.com/izelnakri/memserver/pull/2)
- Test suite refactored from mocha to ava [`#1`](https://github.com/izelnakri/memserver/pull/1)
- first test migrations from mocha to ava [`029e8a6`](https://github.com/izelnakri/memserver/commit/029e8a60e01a764da41586890d42b735fff5ef28)
- v1.1.7 small path reference fix for nodes [`934d5d9`](https://github.com/izelnakri/memserver/commit/934d5d9f9f234ce67ee14cfe241a8dd0f6f0e069)
- majority of model tests moved from mocha to ava [`3f7ffa9`](https://github.com/izelnakri/memserver/commit/3f7ffa9cfddae7b6043986babaa949c434923ae5)
- half of server tests migrated from mocha to ava [`ef042cf`](https://github.com/izelnakri/memserver/commit/ef042cf775227a74ce5a19a1a227a3475f309192)
- v1.2.0 release major package bumps [`de8ac16`](https://github.com/izelnakri/memserver/commit/de8ac1623265b5353ec421392b27b644447afcde)
- initial sketch [`64957a4`](https://github.com/izelnakri/memserver/commit/64957a4fdc0f69524464e689f8ae46137a218552)
- cli tests moved from mocha to ava [`59b403f`](https://github.com/izelnakri/memserver/commit/59b403f001efc5fa4d437ea2546dbce1a5811a35)
- new directory/folder structure for better named npm imports [`faf11cc`](https://github.com/izelnakri/memserver/commit/faf11cc6b79adf8d4c9ccb8db06e3a6a8aa82ef6)
- v1.1.1 memserver cli tests + generate fixture feature [`ebc4ea1`](https://github.com/izelnakri/memserver/commit/ebc4ea129f59e26c8dd27952e7d9c245d46fa13b)
- big progress on Server tests [`ac5b491`](https://github.com/izelnakri/memserver/commit/ac5b491328580919cadd784bb0d98455f88d16d6)
- many essential adjustments, node part completely separated from the memserver module [`084bd6a`](https://github.com/izelnakri/memserver/commit/084bd6a7ad8cca0ca730e56c137b7dd54df3f6eb)
- general memserver api tests moved from mocha to ava [`4629c8d`](https://github.com/izelnakri/memserver/commit/4629c8d41f81e0f1bbbbfc9903b7e43bf47942f9)
- model tests moved from mocha to ava [`81acaf7`](https://github.com/izelnakri/memserver/commit/81acaf7fbea3529e459d88799781f07ea2a87f0c)
- passthrough feature is complete with tests [`9385f18`](https://github.com/izelnakri/memserver/commit/9385f1821fff1d48fdd1741b1d43f0fc00e20690)
- v1.1.4 uuid type-casting bugfix [`91f3101`](https://github.com/izelnakri/memserver/commit/91f31018f0ee81d476c0c9719852d3f06ca99e4c)
- MemServer Model interface rewrite [`f72416f`](https://github.com/izelnakri/memserver/commit/f72416fba196b2ee8602aa19bf07965dccb7692d)
- MemServer.Server request parameter tests moved from mocha to ava [`c39f0d3`](https://github.com/izelnakri/memserver/commit/c39f0d3c289ac610d44b57d0466aaa38c010cf8f)
- stricter type check logic added to fixtures [`685fc7d`](https://github.com/izelnakri/memserver/commit/685fc7d570a73857ba28d6bb08c614ae8e92c147)
- all tests cases added for MemServer v1, implementation awaits [`ccc4994`](https://github.com/izelnakri/memserver/commit/ccc4994a914eef33c298c55f14f65df66743f9d9)
- $Model.insert() final implementation with tests [`46c9820`](https://github.com/izelnakri/memserver/commit/46c9820451425d124358f019d4797f65b8a5be56)
- coalasceFindRequest support fix along with more server test cases written awaiting implementattion [`2da70e2`](https://github.com/izelnakri/memserver/commit/2da70e24156aee2486ccf7e8167e8749f7c7f8ac)
- mem-server.fixtures and men-server.start tests complete [`d138883`](https://github.com/izelnakri/memserver/commit/d138883e102c8833b3709a43070ff8b744860c3b)
- only timing configuration functionality is missing for MemServer runtime functionalities. [`c30337b`](https://github.com/izelnakri/memserver/commit/c30337bb29ba50044a8da593d2af74cb58b4a176)
- v1.0.4 getRelationship support for UUIDs [`23ba425`](https://github.com/izelnakri/memserver/commit/23ba425e265f3cb42d8dbe9fbdc23aac3fd98f3c)
- relationships feature is complete with tests, small adjustments to error messages and randomly failing tests [`a18ecad`](https://github.com/izelnakri/memserver/commit/a18ecadb6487392bcb3e64adff4f649d6374fceb)
- coming soon MemServer.Server, initial sketches [`13b9217`](https://github.com/izelnakri/memserver/commit/13b9217a75ac504fde252603bbd4aea227b1e657)
- most important tests are finished [`14408cb`](https://github.com/izelnakri/memserver/commit/14408cbb29ec0dfd576615e7e132dd4471e774da)
- mem-server/model query interface tests are complete [`3627b2f`](https://github.com/izelnakri/memserver/commit/3627b2f513f68c5a828a4f5293476f604e98acb8)
- another test [`67bae79`](https://github.com/izelnakri/memserver/commit/67bae79b082296244c3d2ab9036c9bef10e05927)
- serializer feature complete with tests [`dd309db`](https://github.com/izelnakri/memserver/commit/dd309db27beb7d4c9e44415c2fcc3f23c8d59936)
- MemServer.Server route shortcuts tests done [`ff10ccd`](https://github.com/izelnakri/memserver/commit/ff10ccdfb801cd6546318b48932c511edeeb45ba)
- initial smart/superior to everything else server functionality [`a7d9894`](https://github.com/izelnakri/memserver/commit/a7d9894c75b246d1aa7ee18c93ad9b86c604381a)
- exception error tests added [`d7a9081`](https://github.com/izelnakri/memserver/commit/d7a908197049fa8d56c635b4e55a2ea422af421a)
- cjs compiled versions added [`bb5970e`](https://github.com/izelnakri/memserver/commit/bb5970ecbd9e593abe66d703f64fe687b6e9c317)
- small fix for cli [`27dcf3e`](https://github.com/izelnakri/memserver/commit/27dcf3e3e7d4b8b13e186430da2669ab826fe649)
- submodules shouldn’t be ignored [`b72225d`](https://github.com/izelnakri/memserver/commit/b72225dd88cf037b2012226037db7fc513f7cd0c)
- another npm trial [`f727340`](https://github.com/izelnakri/memserver/commit/f727340c885c18ffbed1d5ff40f6c13ea5859ac5)
- another trial [`4d0ff38`](https://github.com/izelnakri/memserver/commit/4d0ff38d2a2a841f8fce1aadafb2364b694c497f)
- major upgrade to the MemServer initialization [`f4640c7`](https://github.com/izelnakri/memserver/commit/f4640c7d828553b47b002e5fb1dc2c89548e99c5)
- passthrough tests moved from mocha to ava [`674e2e0`](https://github.com/izelnakri/memserver/commit/674e2e01da156cdca6f3bd792dc318e977194b16)
- some test cases written [`7d2a5c0`](https://github.com/izelnakri/memserver/commit/7d2a5c071ba9f376eefb38fc3dc0708bb660e341)
- missing test files added [`b4e67ab`](https://github.com/izelnakri/memserver/commit/b4e67ab8910694598f5f516abda0e1d01cc5d071)
- initial working MemServer.Server. More tests coming soon. [`40f52b2`](https://github.com/izelnakri/memserver/commit/40f52b237f81e0f8c0bd1756e3a4e1523d31bf4b)
- ongoing internal relationship query work [`fa4ac1e`](https://github.com/izelnakri/memserver/commit/fa4ac1e6b37e13b855351d79c3c53d958e23f12c)
- fixed weird node.js caching bug and retries instated because some results were randomly failing in certain tests  [`7de36c0`](https://github.com/izelnakri/memserver/commit/7de36c08d333cf507b30de337240e920ea11bb8c)
- initialiser added with linter changes [`42bd1ff`](https://github.com/izelnakri/memserver/commit/42bd1ff96b499cb0492fa38a0a056b0fd066b7e4)
- first pretender-hacks added [`a887bc4`](https://github.com/izelnakri/memserver/commit/a887bc4af94d3e0513afaab2c4f2dcc6607850e9)
- FIRST WORKING RELEASE ON NODE + ES5 SINGLE FILE BUILDS FOR BROWSER!! [`e1ccf45`](https://github.com/izelnakri/memserver/commit/e1ccf45c8a5b8b2ad8213a7093aaf999b2431b18)
- more progress on the API sketch [`2d981e4`](https://github.com/izelnakri/memserver/commit/2d981e4e22b00a0c8dbc067620356753f79b8ffa)
- initial cli design [`4e466bc`](https://github.com/izelnakri/memserver/commit/4e466bcd778d6075777f7dee6ec5ed353ddcb489)
- delete operations finalised with tests [`1cb58cf`](https://github.com/izelnakri/memserver/commit/1cb58cf3b248c0083e3611f42260adcfc1e6f811)
- v1.1.6 getRelationship bugfix [`7c023b8`](https://github.com/izelnakri/memserver/commit/7c023b8f12483b31d7acc792e23308bdc1318746)
- moved some server code to the right place. [`2228979`](https://github.com/izelnakri/memserver/commit/2228979e5765884deb96fcb842904c28dc993cc3)
- MemServer.Model queryFunctions are done! [`abb15fa`](https://github.com/izelnakri/memserver/commit/abb15fa5bb0b127f5fb8daa07d0801c57cff22c0)
- DONE: ES MODULE HACKING DONE FOR BROWSER [`5536421`](https://github.com/izelnakri/memserver/commit/5536421ece12b42ff6a6056869f1f3afdbf6b1bb)
- v1.1.5 binary point fix for param casting [`b51e9fa`](https://github.com/izelnakri/memserver/commit/b51e9faf5665143f2b244522b8dd5862f556d16e)
- fixture injection primaryKey unique constraint feature [`be381a4`](https://github.com/izelnakri/memserver/commit/be381a4c9331791a111f9913cc856f9c70a891e3)
- v1.0 release params type casting/nilify_blanks and small insert bugfix [`3871e2e`](https://github.com/izelnakri/memserver/commit/3871e2e3ea2ad68bfc54bbc33879aae2088d0d38)
- Stable ORM Release v1.1.0: No more fixture mutation on restart. [`c571077`](https://github.com/izelnakri/memserver/commit/c571077e271696ad3bcb4dc5ced68d7cd3788b9d)
- memserver CLI kind of ready for test [`c0a7403`](https://github.com/izelnakri/memserver/commit/c0a74034e8e73b75d495040024a158def634bcb8)
- v1.0.2 memserver nilify blanks hotfix [`a75e5f7`](https://github.com/izelnakri/memserver/commit/a75e5f743076eeed50b070c62653386ea43b1095)
- certain model edit methods added [`98656e2`](https://github.com/izelnakri/memserver/commit/98656e2c75175ad85dc068e8251d3bd9693ba36f)
- binary file moved [`8d4d655`](https://github.com/izelnakri/memserver/commit/8d4d655ba9992e7076a6665b1781e819c5ccbe52)
- first barely working rollup build. [`b9590d6`](https://github.com/izelnakri/memserver/commit/b9590d62869be8fbb2b2a72bc437a8503adc7cb3)
- circleci added [`398d18f`](https://github.com/izelnakri/memserver/commit/398d18f1670a1b9b14799910d83fd9ae4eb3cccc)
- circleci added [`e789d48`](https://github.com/izelnakri/memserver/commit/e789d48680969ac13a7d3788ebd51aea636f7835)
- unit tests added for utils [`8b80698`](https://github.com/izelnakri/memserver/commit/8b806981baa0ebf0ee4ce92e698b259230e30cc0)
- 0.9.2 release, log request bodies [`ded8bf5`](https://github.com/izelnakri/memserver/commit/ded8bf573c01ef90f33c3e4eef26e132c6f967ab)
- finalize mocha -> ava rewrite [`63dfacb`](https://github.com/izelnakri/memserver/commit/63dfacb2434297b0345cd759edd5476bf666acee)
- fetch content-type support [`06b7af2`](https://github.com/izelnakri/memserver/commit/06b7af2a756ea18775fec08574a11f362988c9b8)
- further CLI fixes [`df355a8`](https://github.com/izelnakri/memserver/commit/df355a8393e90ef5cc7f4800d2baf0e0af2cb7b6)
- another trial [`a49b239`](https://github.com/izelnakri/memserver/commit/a49b2394de7a6e1b03aa4877ea27d464e9c6c490)
- 0.8.9 release: small MEMSERVER const to let for fastboot [`fb8c952`](https://github.com/izelnakri/memserver/commit/fb8c952370b8c8e3101395c0704c4b7dcfe55be7)
- v1.2.1 release removal of @babel/core peer dependency warnings [`2c8f9eb`](https://github.com/izelnakri/memserver/commit/2c8f9eb0ec5f089e6d4d32f00fdcb6fcc6f82dca)
- custom query tests added [`a4ad69a`](https://github.com/izelnakri/memserver/commit/a4ad69a3824280cc5079486dd8dc5d9f9f35ea3d)
- bug fix for content type [`8b71abd`](https://github.com/izelnakri/memserver/commit/8b71abd48c56f801069582c84923a37223e02c17)
- this one should work [`6f9b308`](https://github.com/izelnakri/memserver/commit/6f9b308e14f99ab0a8eb93b5d5d25eb24108ed68)
- Dockerfile added [`c2ff830`](https://github.com/izelnakri/memserver/commit/c2ff83086cfebe12347439a0c0ae309b61742d47)
- Dockerfile added [`6542f3b`](https://github.com/izelnakri/memserver/commit/6542f3b805971167cb92c3c9b0850d77ddb2b393)
- v1.0.5 BUGFIX: Safer model serializers, Redux way [`6aa3cf2`](https://github.com/izelnakri/memserver/commit/6aa3cf247d1a54315f254d1349ceac668c47512f)
- v1.2.0 npm publish [`2f14aa5`](https://github.com/izelnakri/memserver/commit/2f14aa5383ad6b3d4192b1a11b3c1f2530f733b9)
- 0.9.3 better content type check [`59986d1`](https://github.com/izelnakri/memserver/commit/59986d1741ed4254eed3b41ef6964bd851a8eea5)
- 0.9.8 release patch hotfix [`408d271`](https://github.com/izelnakri/memserver/commit/408d271c0320b2216e7e5f47ba30223beee8c3c4)
- small enchancements to cli [`9849b32`](https://github.com/izelnakri/memserver/commit/9849b324f48a7705977462a2289a656fdcf53d59)
- this version should work with npm [`17d26ff`](https://github.com/izelnakri/memserver/commit/17d26ff77867db8808f22a418826d5d7376d65cd)
- 0.6.7 model import bug resolution, npm you suck! [`6152f60`](https://github.com/izelnakri/memserver/commit/6152f60955a04407129a8c8c391eb006e7e1f8d2)
- v1.1.2 babel-register need for cli [`655ac8c`](https://github.com/izelnakri/memserver/commit/655ac8ca121cb261eed941a7857af53b8eae45c7)
- v1.0.1 nilify blanks for request parameters [`52b78b8`](https://github.com/izelnakri/memserver/commit/52b78b8bcb86b30881c76d3b1a2496e491d36ead)
- 0.9.9 release another small reference bug fix. [`f6cba2f`](https://github.com/izelnakri/memserver/commit/f6cba2f15d32bb35f0459938b46189fe1e75887d)
- intelligent rollup configuration [`b2551d3`](https://github.com/izelnakri/memserver/commit/b2551d30e56ef04e48806e5c30830765f52ac5c0)
- 0.6.0 release [`b743797`](https://github.com/izelnakri/memserver/commit/b743797a4a16f0e04dd84b51666f31879a9c928e)
- unnecessary bulk operation api removed from the library [`0e49715`](https://github.com/izelnakri/memserver/commit/0e497154a9339866f97e51098d42ecdc53c5f855)
- v1.1.2 fix trial for memserver g fixtures [`00187f9`](https://github.com/izelnakri/memserver/commit/00187f9e912a4a75dc0149100bb79df6f2690e34)
- another trial with npm es modules [`ad2710b`](https://github.com/izelnakri/memserver/commit/ad2710b9e44a184323a797d34c495c5e6b5d14a8)
- small logical directory reference fix [`30c9630`](https://github.com/izelnakri/memserver/commit/30c963061b2911a20e1a2ff606a578597b29f656)
- auto generation of primaryKey small bugfix [`46ce6e1`](https://github.com/izelnakri/memserver/commit/46ce6e1ac89819b48027daf89e62402d2340b32b)
- cli build fixes on global [`838f232`](https://github.com/izelnakri/memserver/commit/838f232f1806de6c7ef17fe946523c32585e3400)
- small adjustments to the build [`f73393a`](https://github.com/izelnakri/memserver/commit/f73393a8a2b590298fcd056847895a9eabc330a0)
- memserver initial small fix, also need tests [`c3003a7`](https://github.com/izelnakri/memserver/commit/c3003a7a1a7f9d9c1c08ee64cca9fc7386db61e3)
- small test adjustments [`bdb1f17`](https://github.com/izelnakri/memserver/commit/bdb1f174be31e2a76a3a0c7304782c4168ad4191)
- this version should work [`93cf943`](https://github.com/izelnakri/memserver/commit/93cf94322853380d93603c52d105c24f4a41d49c)
- fixed null typeof bug, ffs javascript [`88efa38`](https://github.com/izelnakri/memserver/commit/88efa385dba634e81cfba69231c01bd9e58c48f3)
- 0.9.5 - Bugfix for RequireJS/Immutablity fuckup. [`1e2a2db`](https://github.com/izelnakri/memserver/commit/1e2a2db71e2a1632efa3f30773c07e7509c1cb8f)
- 0.9.4 stricter reset [`e493ff3`](https://github.com/izelnakri/memserver/commit/e493ff34bec2845f31485d68215cede75d3a73df)
- rollup compiler fix trial [`18ddc28`](https://github.com/izelnakri/memserver/commit/18ddc2899de4122d567d0fd2f7f67c52a2ec5d4d)
- cli fix [`89644ed`](https://github.com/izelnakri/memserver/commit/89644ed8c00f46eaeab71d96a5d424cd2ac39b10)
- more fixes [`179d758`](https://github.com/izelnakri/memserver/commit/179d75803a1dd5d6a3bfbea53957ceea5cbf4fe0)
- circleci icon added to README [`b5b6f40`](https://github.com/izelnakri/memserver/commit/b5b6f4032f9a3249ef99c93f0a35c3321832f919)
- circleci icon added to README [`578ec21`](https://github.com/izelnakri/memserver/commit/578ec2169a81307b4931986341d455bd9bced676)
- BUGFIX: better/smarted embedRelationship lookup [`c1728d9`](https://github.com/izelnakri/memserver/commit/c1728d98f0dff3dbf786edadc8b7986b945d4521)
- 0.9.1 release [`9237674`](https://github.com/izelnakri/memserver/commit/923767475b3e01e2cfe4a3b308bd76e10b07c69a)
- another try with the smart rollup [`14deed1`](https://github.com/izelnakri/memserver/commit/14deed150d545b625fca6b444a9fd81738770764)
- another trial [`15ab561`](https://github.com/izelnakri/memserver/commit/15ab561606df11a58ccbf2e4b6f3080c40b6285a)
- small test [`d97277e`](https://github.com/izelnakri/memserver/commit/d97277ec045cd294ffe2f678a9c7ee0e636ff3bc)
- v1.1.8 release [`a9d76ac`](https://github.com/izelnakri/memserver/commit/a9d76ace1b8c5bb4a4185a116778764121282c26)
- 0.9.7 release [`d68c8c4`](https://github.com/izelnakri/memserver/commit/d68c8c4db425903516df4df9f135b74bd6deccbb)
- 0.6.1 release [`6b80700`](https://github.com/izelnakri/memserver/commit/6b80700e3f98f24c49e86d95d092e3ffd78ce752)
- binary fix [`4ba7bd5`](https://github.com/izelnakri/memserver/commit/4ba7bd58848a6eec62301dac8ff162c9fdc7756e)

repository: izelnakri/memserver

repo_name: izelnakri/memserver


text:
# Service Identity Verification

Use this package if:

- you want to **verify** that a [PyCA *cryptography*](https://cryptography.io/) certificate is valid for a certain hostname or IP address,
- or if you use [pyOpenSSL](https://pypi.org/project/pyOpenSSL/) and don’t want to be [**MITM**](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)ed,
- or if you want to **inspect** certificates from either for service IDs.

*service-identity* aspires to give you all the tools you need for verifying whether a certificate is valid for the intended purposes.
In the simplest case, this means *host name verification*.
However, *service-identity* implements [RFC 6125](https://datatracker.ietf.org/doc/html/rfc6125.html) fully.

Please also check out [*pem*](https://github.com/hynek/pem) that makes loading certificates from all kinds of PEM-encoded files a breeze!

## Project Information

*service-identity* is released under the [MIT](https://github.com/pyca/service-identity/blob/main/LICENSE) license, its documentation lives at [Read the Docs](https://service-identity.readthedocs.io/), the code on [GitHub](https://github.com/pyca/service-identity), and the latest release on [PyPI](https://pypi.org/project/service-identity/).

### Credits

*service-identity* is written and maintained by [Hynek Schlawack](https://hynek.me/).

The development is kindly supported by my employer [Variomedia AG](https://www.variomedia.de/), *service-identity*'s [Tidelift subscribers][Tidelift], and all my amazing [GitHub Sponsors](https://github.com/sponsors/hynek).

### *service-identity* for Enterprise

Available as part of the Tidelift Subscription.

The maintainers of *service-identity* and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open-source packages you use to build your applications.
Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
[Learn more.][Tidelift]

[Tidelift]: https://tidelift.com/subscription/pkg/pypi-service-identity?utm_source=pypi-service-identity&utm_medium=readme

repository: pyca/service-identity

gha_language: Python

repo_name: pyca/service-identity


text:
# Date: 14 September 2020

## Question:
At a casino, a board game requires you to first roll a dice. You suspect that the dice is biased towards 6, so you start counting. In a game, the dice is rolled 250 times and 6 comes up 51 times. Is the dice biased towards generating more 6s (assume significance level = 5%)?

## Topic:
1. Data Science
2. Probability and Statistics
3. Binomial Test

## Options:
1. Yes
2. No

## Correct Option:
2. Yes

## Explanation:
If the dice is fair, then we would expect six to come up $250*\frac{1}{6} = 41.667$ times. We have now observed that the number of 6s is higher than what we would expect on average by pure chance had the dice been a fair one. But, is the number significantly high enough for us to conclude anything about the fairness of the dice? This question can be answered by the binomial test. Our null hypothesis would be that the dice is fair (probability of each number coming up on the dice is 1/6).

As we have observed a value greater than the expected value, we could consider the probability of observing 51 6s or higher under the null, which would constitute a one-tailed test (here we are basically testing whether this die is biased towards generating more 6s than expected).

In R, we can perform the binomial test as follows:
``` r
binom.test(x=51, n=250, p=1/6, alternative='greater')
#>
#>  Exact binomial test
#>
#> data:  51 and 250
#> number of successes = 51, number of trials = 250, p-value = 0.06966
#> alternative hypothesis: true probability of success is greater than 0.1666667
#> 95 percent confidence interval:
#>  0.1628731 1.0000000
#> sample estimates:
#> probability of success
#>                  0.204
```

As the $p-value$ is greater than our significance level $(0.06966 > 0.05)$ indicates that we don't have evidence that is significant enough to reject the null hypothesis that the dice is fair.

## Scripts:
1. Question Script: NULL
2. Answer Script: NULL

## Link:
1. Question Link:
   1. "https://en.wikipedia.org/wiki/Binomial_test"
2. Answer Link:
   1. "https://en.wikipedia.org/wiki/Binomial_test"

## Images:
1. Question Images: NULL
2. Answer Images:
   1. "../images/answers/a_14092020.png"

gha_language: HTML


text:
# tencentcloud_redis_backup_config

[back](../tencentcloud.md)

### Index

- [Example Usage](#example-usage)
- [Variables](#variables)
- [Resource](#resource)
- [Outputs](#outputs)

### Terraform

```terraform
terraform {
  required_providers {
    tencentcloud = ">= 1.56.1"
  }
}
```

[top](#index)

### Example Usage

```terraform
module "tencentcloud_redis_backup_config" {
  source = "./modules/tencentcloud/r/tencentcloud_redis_backup_config"

  # backup_period - (required) is a type of set of string
  backup_period = []
  # backup_time - (required) is a type of string
  backup_time = null
  # redis_id - (required) is a type of string
  redis_id = null
}
```

[top](#index)

### Variables

```terraform
variable "backup_period" {
  description = "(required) - Specifys which day the backup action should take place. Valid values: `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday` and `Sunday`."
  type        = set(string)
}

variable "backup_time" {
  description = "(required) - Specifys what time the backup action should take place. And the time interval should be one hour."
  type        = string
}

variable "redis_id" {
  description = "(required) - ID of a redis instance to which the policy will be applied."
  type        = string
}
```

[top](#index)

### Resource

```terraform
resource "tencentcloud_redis_backup_config" "this" {
  # backup_period - (required) is a type of set of string
  backup_period = var.backup_period
  # backup_time - (required) is a type of string
  backup_time = var.backup_time
  # redis_id - (required) is a type of string
  redis_id = var.redis_id
}
```

[top](#index)

### Outputs

```terraform
output "id" {
  description = "returns a string"
  value       = tencentcloud_redis_backup_config.this.id
}

output "this" {
  value = tencentcloud_redis_backup_config.this
}
```

[top](#index)

repository: chadwickalex/tfwriter

repo_name: chadwickalex/tfwriter


text:
---
layout: default
title: Turnips & The Stalk Market
nav_order: 4
parent: Island Life
permalink: island-life/turnips/
---

# Turnips/Stalk Market
## When does Daisy Mae visit?
Once you've built Nook's Cranny, Daisy Mae will visit every Sunday from 5:00 AM to 12:00 AM. No NPC or event interrupts her arrival.

## How does the Stalk Market work?
  Daisy Mae’s prices change every time she visits, and you can buy turnips for *90 to 110 bells per turnip*. If you choose to purchase them, you can sell turnips to Nook's Cranny until Saturday (after which they will rot). Nook's Cranny can buy turnips at prices ranging from *9 to 660 bells per turnip*. Nook’s Cranny has two distinct prices every day, one in the morning (from 8:00 AM to 12:00 PM), then another one in the afternoon (from 12:00 PM to 10:00 PM). The goal is to sell your turnips for *more* than you spent on them to make millions!

For further, extensive details about turnips and the stalk market, read here: <https://tinyurl.com/acnhturnipdoc>

## Stalk Market Tips
- There are varying turnip price patterns, and you can predict the pattern using <https://turnipprophet.io/>, which uses your prices to predict what future prices might be later in the week.
- If you have a Nintendo Switch Online subscription, you can travel to others’ islands for a guaranteed high price. Suggested websites to find high prices: <https://turnip.exchange>, ACNH Discord Server (<https://discord.com/invite/acnh>).
- Don't let your turnips rot! You can't unspoil them, and Nook’s Cranny will only buy rotten turnips for 100 bells and they won't be sold as stacks of 10. Instead, they'll sell as one turnip per stack. Make sure you sell by the following Saturday. Otherwise, they'll spoil Sunday morning at 5:00 AM.

## How do I time travel for good turnip prices?
Your turnip price pattern resets every time you time travel backwards. If you want to fish out big spike price with TT, follow this method:
1. TT to Tuesday at 11:58 AM and check your price.
2. If the price is not anywhere within the 127-225 range, save and quit. TT back to 11:57 AM, re-login. Repeat this step until the sell price is in that 127-225 range.
3. When the price is within the 127-225 range, wait in game until 12:00 PM, then check the price again.
4. If the price is not high enough, return to Step 1.

## How do I do turnip runs?
Turnip runs are a simple process but can be easily used to make tens of millions of bells. The process requires a **Nintendo Switch Online subscription** and a partner.

1. One person time travels until they find a high turnip price at Nook’s Cranny (see: “How do I time travel for good turnip prices?”).
    - Aim for prices of 300 bells or more — the higher the better.
2. The other person time travels until they find a low buy price from Daisy Mae. (Simply travel to Sunday, back a day, and forward again until you find your desired price.)
    - Aim for prices of less than 95 bells.
3. Buy a full inventory from Daisy Mae, travel to the Nook’s Cranny and sell. Rinse, repeat, make money!


text:
# History

- v0.2.6 November 6, 2013
	- Updated dependencies

- v0.2.5 October 31, 2013
	- Seems github doesn't like `//` urls

- v0.2.4 October 31, 2013
	- Updated badges to use `//` for their urls

- v0.2.3 October 23, 2013
	- Fixed error when encountering an unknown license

- v0.2.2 October 23, 2013
	- Fixed `license` and `licenses` duplicate in `package.json` file
	- Fixed some issues with contributors and `package.json` files

- v0.2.1 October 16, 2013
	- Fixed some issues. Now stable enough to use for your projects.

- v0.2.0 October 16, 2013
	- Added INSTALL, BACKER, and BACKERFILE tags

- v0.1.0 October 15, 2013
	- Mostly working except for BACKER tags

- v0.0.2 September 19, 2013
	- Renamed from `readme-utils` to `projectz`

- v0.0.1 June 19, 2013
	- Initial non-working commit

repository: RobLoach/docpad-plugin-redirector

repo_name: RobLoach/docpad-plugin-redirector


text:
---
alias: quote-bible
title: A bible of my own
summary: All the words and sentences that have been like the blast of a trumpet
tags: personal, quotes
created: 2021-01-17T00:00:00-08:00
lastmod: 2021-02-02T03:48:16-08:00
---

>Make your own bible. Select and collect all the words and sentences that in all your readings have been to you like the blast of a trumpet.
>- Ralph Waldo Emerson

"...how has it become acceptable that so many people, and especially so many young people, are [mentally] ill? The 'mental health plague' in capitalist societies would suggest that, instead of being the only social system that works, capitalism is inherently dysfunctional, and that the cost of it appearing to work is very high."[^1]

"The opposite of a true statement is a false statement, but the opposite of a profound truth can be another profound truth."[^2]

"I am so weary of sighing my Lord, grant that the night cometh."

"Looking into the cool tepid vista of the rest of my life."

"...we are the subjects of an experiment which no one is consciously really conducting. What is the nature of this experiment? Well I think it is to see what a kind of 'electro-libidinal parasite' can do to you."[^3]

[^1]: [[Mark Fisher]], _Capitalist Realism_
[^2]:Niels Bohr
[^3]:See note: _[[time-is-out-of-joint|Time is out of joint]]_

repository: kyrose/cyberbellum

gha_license_id: NOASSERTION

repo_name: kyrose/cyberbellum


text:
[![license](https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square)](https://github.com/mathiasfc/simple-drumpad)

# Simple Drumpad

![Gif](https://github.com/mathiasfc/simple-drumpad/blob/master/src/assets/animated.gif?raw=true)

🎹 [drumpad](https://mathiasfc.github.io/simple-drumpad/)

> Work in progress...

> Vue 3.0.4

🎼 We're building a drumpad application to have fun and at the same time apply the knowledge acquired with the VueJS.

🎹 Creating based on a first [version](https://codepen.io/mathiasfc/pen/eRQRze) (codepen).

🍻 Feel free to contribute whatsoever.

## How to Install

- Clone this repo and run

```
  npm install
```

# How to Use

```
  npm run serve
```

## TODO

- Display
- Loop recording
- Loop sync
- Code refactor
- Implement new features

## License

[MIT](LICENSE.md)

repository: DogGuyMan/simple-drumpad

repo_name: DogGuyMan/simple-drumpad


text:
Cordova Plugin
==============

Cordova plugin for the MetaWear API.  This is currently a work in progress.  The API is very fluid and breaking changes are likely until things are a bit more feature complete.

##Supported Sensors
*Accelerometer
*GPIO Pins
*RSSI

##Getting Started:

Create your Cordova project
```
cordova create <your project>
```
Add in the plugin
```
cordova plugin add http://www.github.com/mbientlab-projects/cordova-plugin-metawear.html
```
Add in your platform
```
cordova platform add android
cordova platform add ios
```
Load Device.js in your javascript.

Head over to https://github.com/mbientlab-projects/metawear_cordova_example for a simple example project.

##Using The Plugin

Currently the project supports the following functions:

* Connecting and Disconnecting to the board
* Reading the RSSI for the device.
* Streaming accelerometer data.

This module currently support IOS and Android.  If you would like to see support for other platforms please open an issue.

Methods are called from the metawear.mwdevice object.  Callbacks take the form of

```Javascript
var mycallback = function(result){
   // your code here
}
```

##Supported Methods

###Initialize

Initialize takes a success and failure callback and parameters.  The result value in the callbacks are string values indicating a success or failure of the command.

```Javascript
var success = function(result){
  console.log("Initialized with status: " + result);
}

var failure = function(result){
  console.log("Initialize Error: " + result);
}

mbientlab.mwdevice.initialize(success, failure);
```

###Connect

Connects to the specified board.  The success callback is also used for disconnect.

```Javacript
mbientlab.mwdevice.connect(macAddressOfBoard, succesCallback, failureCallback);
```

###Disconnect

Disconnects from the board.  Sends a disconnect message to the success callback of connect.

```Javascript
mbientlab.mwdevice.disconnect();
```

###readRssi

Reads the RSSI value you are currently getting from the board.  The RSSI is returned as a string in the success callback.

```Javascript
mbientlab.mwdevice.readRssi(successCallback, failureCallback);
```

###startAccelerometer

Starts the accelerometer on the board and streams the data to the callback until it is stopped.  The callback result is an object with x,y and z values from the accelerometer.

```Javascript
var failure = function(result){
}

var success = function(result){
   console.log("x: " + result.x + " y: " + result.y + " z: " + result.z);
}

mbientlab.mwdevice.startAccelerometer(success, failure);
```

###stopAccelerometer

Stops the accelerometer and stops streaming data.

```Javascript
mbientlab.mwdevice.stopAccelerometer();
```

##Roadmap

Right now the following components are on the roadmap for this plugin.  The plan is to add  these in this order,  but if there is specific functionality that you need please file an issue and we can see about moving it up on the list.

*LED
*BMI 160 Accelerometer
*BMI 160 Gyro
*BMP 280 Barometer-Pressure Sensor
*Haptic
*I2C
*MMA 8452Q Accelerometer -  Axis Sampling
*MultiChannel Temperature
*NeoPixel
*Logging
*Data Processor -
**accumulator
**RMS
**threshold
**counter

repository: aiham/cordova-plugin-metawear

repo_name: aiham/cordova-plugin-metawear


text:
Ruby API for geocaching.com
===========================

This Ruby library provides an API for geocaching.com.

Usage
-----

    require "geocaching"

    # Logging in is not always necessary, but some information are only
    # accessible when logged in.
    Geocaching::HTTP.login("username", "password")

    # Fetch the information for a cache by the cache’s GC code.  You can also
    # provide the cache’s GUID instead of the GC code.
    cache = Geocaching::Cache.fetch(:code => "...")

    # Print some cache information.
    puts "      Name: #{cache.name}"
    puts "Difficulty: #{cache.difficulty}"
    puts "     Owner: #{cache.owner.username}"

    # Print the number of logs.
    puts "      Logs: #{cache.logs.size}"

    # Print the number of users that didn’t find the cache.
    dnfs = cache.logs.select { |log| log.type == :dnf }.size
    puts "      DNFs: #{dnfs}"

    # Fetch the information for a log by its GUID.
    log = Geocaching::Log.fetch(:guid => "...")

    # Print some log information.
    puts "Username: #{log.user.name}"
    puts "   Words: #{log.message.split.size}"
    puts "   Cache: #{log.cache.name}"

    Geocaching::HTTP.logout

The whole library may raise the following exceptions:

* `Geocaching::TimeoutError` when a timeout is hit.
* `Geocaching::LoginError` when calling a method that requires being
  logged in and you’re not.
* `Geocaching::NotFetchedError` when accessing a method that requires the
  `fetch` method to be called first.
* `Geocaching::ExtractError` when information could not be extracted
  out of the website’s HTML code.  This mostly happens after Groundspeak
  changed their website.
* `Geocaching::HTTPError` when a HTTP request failed.

All exceptions are subclasses of `Geocaching::Error`.

Tests
-----

Tests are written using [RSpec](http://relishapp.com/rspec).
You need [Bundler](http://gembundler.com/) to run the tests.

    $ bundle update
    $ GC_USERNAME="username" GC_PASSWORD="password" bundle exec rake test

Additional environment variables you may specify are:

* `GC_TIMEOUT` — HTTP timeout in seconds
* `GC_CACHE_TYPES` — A space-separated list of cache types you want to test.
* `GC_LOG_TYPES` — A space-separated list of log types you want to test.

repository: lloydpick/ruby-geocaching

extension: markdown

repo_name: lloydpick/ruby-geocaching


text:
---
layout: default
---

# 1996-09-14 - Re: unwanted mail..what can I do?

## Header Data

From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Message Hash: 05763ae45a1f9716b0f02a1023a07e443b4534c7c61897ea97f5fbf34c1257f8

Message ID<EMAIL_ADDRESS>Reply To: _N/A_

UTC Datetime: 1996-09-14 18:53:00 UTC

Raw Date: Sun, 15 Sep 1996 02:53:00 +0800

## Raw message

```
{% raw  %}From<EMAIL_ADDRESS>Date: Sun, 15 Sep 1996 02:53:00 +0800
To<EMAIL_ADDRESS>Subject: Re: unwanted mail..what can I do?
Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

In a message dated 96-09-14 01:18:49 EDT<EMAIL_ADDRESS>(Dr.Dimitri Vulis
KOTM) writes:

<<
<EMAIL_ADDRESS>writes:

 > I recieved mail from netfree.com..
 > I tried mailing it back (it def. had a forged address, but I got the
netfree
 > from the mail header.....)
 > So anyway..... I tried sending to<EMAIL_ADDRESS>mail was rejected
(not
 > unknown ...it was rejected by the system) said it wasnt authorized... so I
 > tried<EMAIL_ADDRESS>thing.
 > It ISSSSS rather annoying...any sugestions?

   Learn to delete unwanted e-mail. Get a real shell account.

 2. Ask AOL to let its users decide what e-mail to reject automatically (like
 procmail). They've been promising this capability by the end of September.
  I must thank<EMAIL_ADDRESS>for his TRULY helpful
response.
But you........get a real shell account?? I do thank you. netcom and a school
system. I can delete unwanted mail. But maybe I LIKE to yell at people who
spam me. And ive never received mail from netfree before..nor since... thats
NOT my problem. Learn to comprehend what pthers write. I wanted to know what
I can do about getting in coontact with them. It is in my opinion not right
to forge email addresses...people dont do it when the send me us postal mail

{% endraw %}
```

## Thread

+ Return to [September 1996](/archive/1996/09)

+ Return to "[AwakenToMe@aol.com](/authors/awakentome_at_aol_com)"

+ 1996-09-14 (Sun, 15 Sep 1996 02:53:00 +0800) - Re: unwanted mail..what can I do? -<EMAIL_ADDRESS>


text:
# SLSA Provenance

This page describes the "SLSA Provenance" predicate that fits within the larger
[in-toto attestation] framework. For more information about attestations, see
that repo.

This predicate is the recommended way to satisfy the SLSA [provenance
requirements].

## Metadata

Type URI: https://slsa.dev/provenance/v0.1

Version: 0.1.1

## Purpose

Describe how an artifact or set of artifacts was produced.

## Model

Provenance is a claim that some entity (`builder`) produced one or more software
artifacts ([Statement]'s `subject`) by executing some `recipe`, using some other
artifacts as input (`materials`). The builder is trusted to have faithfully
recorded the provenance; there is no option but to trust the builder. However,
the builder may have performed this operation at the request of some external,
possibly untrusted entity. These untrusted parameters are captured in the
recipe's `entryPoint`, `arguments`, and some of the `materials`. Finally, the
build may have depended on various environmental parameters (`environment`) that
are needed for [reproducing][reproducible] the build but that are not under
external control.

See [Example](#example) for a concrete example.

![Model Diagram](../images/provenance.svg)

## Schema

```jsonc
{
  // Standard attestation fields:
  "_type": "https://in-toto.io/Statement/v0.1",
  "subject": [{ ... }],

  // Predicate:
  "predicateType": "https://slsa.dev/provenance/v0.1",
  "predicate": {
    "builder": {
      "id": "<URI>"
    },
    "recipe": {
      "type": "<URI>",
      "definedInMaterial": /* integer */,
      "entryPoint": "<STRING>",
      "arguments": { /* object */ },
      "environment": { /* object */ }
    },
    "metadata": {
      "buildInvocationId": "<STRING>",
      "buildStartedOn": "<TIMESTAMP>",
      "buildFinishedOn": "<TIMESTAMP>",
      "completeness": {
        "arguments": true/false,
        "environment": true/false,
        "materials": true/false
      },
      "reproducible": true/false
    },
    "materials": [
      {
        "uri": "<URI>",
        "digest": { /* DigestSet */ }
      }
    ]
  }
}
```

### Parsing rules

This predicate follows the in-toto attestation [parsing rules]. Summary:

-   Consumers MUST ignore unrecognized fields.
-   The `predicateType` URI includes the major version number and will always
    change whenever there is a backwards incompatible change.
-   Minor version changes are always backwards compatible and "monotonic." Such
    changes do not update the `predicateType`.
-   Producers MAY add extension fields using field names that are URIs.

### Fields

_NOTE: This section describes the fields within `predicate`. For a description
of the other top-level fields, such as `subject`, see [Statement]._

`builder` _object, required_

> Identifies the entity that executed the recipe, which is trusted to have
> correctly performed the operation and populated this provenance.
>
> The identity MUST reflect the trust base that consumers care about. How
> detailed to be is a judgement call. For example, [GitHub Actions] supports
> both GitHub-hosted runners and self-hosted runners. The GitHub-hosted runner
> might be a single identity because, it's all GitHub from the consumer's
> perspective. Meanwhile, each self-hosted runner might have its own identity
> because not all runners are trusted by all consumers.
>
> Consumers MUST accept only specific (signer, builder) pairs. For example, the
> "GitHub" can sign provenance for the "GitHub Actions" builder, and "Google"
> can sign provenance for the "Google Cloud Build" builder, but "GitHub" cannot
> sign for the "Google Cloud Build" builder.
>
> Design rationale: The builder is distinct from the signer because one signer
> may generate attestations for more than one builder, as in the GitHub Actions
> example above. The field is required, even if it is implicit from the signer,
> to aid readability and debugging. It is an object to allow additional fields
> in the future, in case one URI is not sufficient.

`builder.id` _string ([TypeURI]), required_

> URI indicating the builder's identity.

`recipe` _object, optional_

> Identifies the configuration used for the build. When combined with
> `materials`, this SHOULD fully describe the build, such that re-running this
> recipe results in bit-for-bit identical output (if the build is
> [reproducible]).
>
> MAY be unset/null if unknown, but this is DISCOURAGED.

`recipe.type` _string ([TypeURI]), required_

> URI indicating what type of recipe was performed. It determines the meaning of
> `recipe.entryPoint`, `recipe.arguments`, `recipe.environment`, and
> `materials`.

`recipe.definedInMaterial` _integer, optional_

> Index in `materials` containing the recipe steps that are not implied by
> `recipe.type`. For example, if the recipe type were "make", then this would
> point to the source containing the Makefile, not the `make` program itself.
>
> Omit this field (or use null) if the recipe doesn't come from a material.
>
> TODO: What if there is more than one material?

`recipe.entryPoint` _string, optional_

> String identifying the entry point into the build. This is often a path to a
> configuration file and/or a target label within that file. The syntax and
> meaning are defined by `recipe.type`. For example, if the recipe type were
> "make", then this would reference the directory in which to run `make` as well
> as which target to use.
>
> Consumers SHOULD accept only specific `recipe.entryPoint` values. For example,
> a policy might only allow the "release" entry point but not the "debug" entry
> point.
>
> MAY be omitted if the recipe type specifies a default value.
>
> Design rationale: The `entryPoint` is distinct from `arguments` to make it
> easier to write secure policies without having to parse `arguments`.

`recipe.arguments` _object, optional_

> Collection of all external inputs that influenced the build on top of
> `recipe.definedInMaterial` and `recipe.entryPoint`. For example, if the recipe
> type were "make", then this might be the flags passed to `make` aside from the
> target, which is captured in `recipe.entryPoint`.
>
> Consumers SHOULD accept only "safe" `recipe.arguments`. The simplest and
> safest way to achieve this is to disallow any `arguments` altogether.
>
> This is an arbitrary JSON object with a schema is defined by `recipe.type`.
>
> This is considered to be incomplete unless `metadata.completeness.arguments`
> is true. Unset or null is equivalent to empty.

`recipe.environment` _object, optional_

> Any other builder-controlled inputs necessary for correctly evaluating the
> recipe. Usually only needed for [reproducing][reproducible] the build but not
> evaluated as part of policy.
>
> This SHOULD be minimized to only include things that are part of the public
> API, that cannot be recomputed from other values in the provenance, and that
> actually affect the evaluation of the recipe. For example, this might include
> variables that are referenced in the workflow definition, but it SHOULD NOT
> include a dump of all environment variables or include things like the
> hostname (assuming hostname is not part of the public API).
>
> This is an arbitrary JSON object with a schema is defined by `recipe.type`.
>
> This is considered to be incomplete unless `metadata.completeness.environment`
> is true. Unset or null is equivalent to empty.

`metadata` _object, optional_

> Other properties of the build.

`metadata.buildInvocationId` _string, optional_

> Identifies this particular build invocation, which can be useful for finding
> associated logs or other ad-hoc analysis. The exact meaning and format is
> defined by `builder.id`; by default it is treated as opaque and
> case-sensitive. The value SHOULD be globally unique.

`metadata.buildStartedOn` _string ([Timestamp]), optional_

> The timestamp of when the build started.

`metadata.buildFinishedOn` _string ([Timestamp]), optional_

> The timestamp of when the build completed.

`metadata.completeness` _object, optional_

> Indicates that the `builder` claims certain fields in this message to be
> complete.

`metadata.completeness.arguments` _boolean, optional_

> If true, the `builder` claims that `recipe.arguments` is complete, meaning
> that all external inputs are propertly captured in `recipe`.

`metadata.completeness.environment` _boolean, optional_

> If true, the `builder` claims that `recipe.environment` is claimed to be
> complete.

`metadata.completeness.materials` _boolean, optional_

> If true, the `builder` claims that `materials` is complete, usually through
> some controls to prevent network access. Sometimes called "hermetic".

`metadata.reproducible` _boolean, optional_

> If true, the `builder` claims that running `recipe` on `materials` will
> produce bit-for-bit identical output.

`materials` _array of objects, optional_

> The collection of artifacts that influenced the build including sources,
> dependencies, build tools, base images, and so on.
>
> This is considered to be incomplete unless `metadata.completeness.materials`
> is true. Unset or null is equivalent to empty.

`materials[*].uri` _string ([ResourceURI]), optional_

> The method by which this artifact was referenced during the build.
>
> TODO: Should we differentiate between the "referenced" URI and the "resolved"
> URI, e.g. "latest" vs "3.4.1"?
>
> TODO: Should wrap in a `locator` object to allow for extensibility, in case we
> add other types of URIs or other non-URI locators?

`materials[*].digest` _object ([DigestSet]), optional_

> Collection of cryptographic digests for the contents of this artifact.

## Example

WARNING: This is just for demonstration purposes.

Suppose the builder downloaded `example-1.2.3.tar.gz`, extracted it, and ran
`make -C src foo CFLAGS=-O3`, resulting in a file with hash `5678...`. Then the
provenance might look like this:

```jsonc
{
  "_type": "https://in-toto.io/Statement/v0.1",
  // Output file; name is "_" to indicate "not important".
  "subject": [{"name": "_", "digest": {"sha256": "5678..."}}],
  "predicateType": "https://slsa.dev/provenance/v0.1",
  "predicate": {
    "builder": { "id"<EMAIL_ADDRESS>},
    "recipe": {
      "type": "https://example.com/Makefile",
      "definedInMaterial": 0,                 // material containing the Makefile
      "entryPoint": "src:foo",                // target "foo" in directory "src"
      "arguments": {"CFLAGS": "-O3"}          // extra args to `make`
    },
    "materials": [{
      "uri": "https://example.com/example-1.2.3.tar.gz",
      "digest": {"sha256": "1234..."}
    }]
  }
}
```

## More examples

### GitHub Actions

WARNING: This is only for demonstration purposes. The GitHub Actions team has
not yet reviewed or approved this design, and it is not yet implemented. Details
are subject to change!

If GitHub is the one to generate provenance, and the runner is GitHub-hosted,
then the builder would be as follows:

```json
"builder": {
  "id": "https://github.com/Attestations/GitHubHostedActions@v1"
}
```

Self-hosted runner: Not yet supported. We need to figure out a URI scheme that
represents what system hosted the runner, or perhaps add additional properties
in `builder`.

GitHub Actions Workflow:

```jsonc
"recipe": {
  // Build steps were defined in a GitHub Actions Workflow file ...
  "type": "https://github.com/Attestations/GitHubActionsWorkflow@v1",
  // ... in the git repo described by `materials[0]` ...
  "definedInMaterial": 0,
  // ... at the path .github/workflows/build.yaml, using the job "build".
  "entryPoint": "build.yaml:build",
  // The only possible user-defined parameters that can affect the build are the
  // "inputs" to a workflow_dispatch event. This is unset/null for all other
  // events.
  "arguments": {
    "inputs": { ... }
  },
  // Other variables that are required to reproduce the build and that cannot be
  // recomputed using existing information. (Documentation would explain how to
  // recompute the rest of the fields.)
  "environment": {
    // The architecture of the runner.
    "arch": "amd64",
    // Environment variables. These are always set because it is not possible
    // to know whether they were referenced or not.
    "env": {
      "GITHUB_RUN_ID": "1234",
      "GITHUB_RUN_NUMBER": "5678",
      "GITHUB_EVENT_NAME": "push"
    },
    // The context values that were referenced in the workflow definition.
    // Secrets are set to the empty string.
    "context": {
      "github": {
        "run_id": "abcd1234"
      },
      "runner": {
        "os": "Linux",
        "temp": "/tmp/tmp.iizj8l0XhS",
      }
    }
  }
}
"materials": [{
  // The git repo that contains the build.yaml referenced above.
  "uri": "git+https://github.com/foo/bar.git",
  // The resolved git commit hash reflecting the version of the repo used
  // for this build.
  "digest": {"sha1": "abc..."}
}]
```

### Google Cloud Build

WARNING: This is only for demonstration purposes. The Google Cloud Build team
has not yet reviewed or approved this design, and it is not yet implemented.
Details are subject to change!

If Google is the one to generate provenance, and the worker is Google-hosted,
then the builder would be as follows:

```json
"builder": {
  "id": "https://cloudbuild.googleapis.com/GoogleHostedWorker@v1"
}
```

Custom worker: Not yet supported. We need to figure out a URI scheme that
represents what system hosted the worker, or perhaps add additional properties
in `builder`.

#### Cloud Build config-as-code

Here `entryPoint` references the `filename` from the CloudBuild
[BuildTrigger](https://cloud.google.com/build/docs/api/reference/rest/v1/projects.triggers).

```jsonc
"recipe": {
  // Build steps were defined in a cloudbuild.yaml file ...
  "type": "https://cloudbuild.googleapis.com/CloudBuildYaml@v1",
  // ... in the git repo described by `materials[0]` ...
  "definedInMaterial": 0,
  // ... at the path path/to/cloudbuild.yaml.
  "entryPoint": "path/to/cloudbuild.yaml",
  // The only possible user-defined parameters that can affect a BuildTrigger
  // are the subtitutions in the BuildTrigger.
  "arguments": {
    "substitutions": {...}
  }
}
"materials": [{
  // The git repo that contains the cloudbuild.yaml referenced above.
  "uri": "git+https://source.developers.google.com/p/foo/r/bar",
  // The resolved git commit hash reflecting the version of the repo used
  // for this build.
  "digest": {"sha1": "abc..."}
}]
```

#### Cloud Build RPC

Here we list the steps defined in a trigger or over RPC:

```jsonc
"recipe": {
  // Build steps were provided as an argument. No `definedInMaterial` or
  // `entryPoint`.
  "type": "https://cloudbuild.googleapis.com/CloudBuildSteps@v1",
  "arguments": {
    // The steps that were performed. (Format TBD.)
    "steps": [...],
    // The substitutions in the build trigger.
    "substitutions": {...}
    // TODO: Any other arguments?
  }
}
```

### Explicitly run commands

WARNING: This is just a proof-of-concept. It is not yet standardized.

Execution of arbitrary commands:

```jsonc
"recipe": {
  // There was no entry point, and the commands were run in an ad-hoc fashion.
  // There is no `definedInMaterial` or `entryPoint`.
  "type": "https://example.com/ManuallyRunCommands@v1",
  "arguments": {
    // The list of commands that were executed.
    "commands": [
      "tar xvf foo-1.2.3.tar.gz",
      "cd foo-1.2.3",
      "./configure --enable-some-feature",
      "make foo.zip"
    ],
    // Indicates how to parse the strings in `commands`.
    "shell": "bash"
  }
}
```

## Change history

-   Renamed to "slsa.dev/provenance".
-   0.1.1: Added `metadata.buildInvocationId`.
-   0.1: Initial version, named "in-toto.io/Provenance"

[DigestSet]: https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
[GitHub Actions]: #github-actions
[Reproducible]: https://reproducible-builds.org
[ResourceURI]: https://github.com/in-toto/attestation/blob/main/spec/field_types.md#ResourceURI
[SLSA]: https://slsa.dev
[Statement]: https://github.com/in-toto/attestation/blob/main/spec/README.md#statement
[Timestamp]: https://github.com/in-toto/attestation/blob/main/spec/field_types.md#Timestamp
[TypeURI]: https://github.com/in-toto/attestation/blob/main/spec/field_types.md#TypeURI
[in-toto attestation]: https://github.com/in-toto/attestation
[parsing rules]: https://github.com/in-toto/attestation/blob/main/spec/README.md#parsing-rules
[provenance requirements]: ../requirements.md#provenance-requirements

repository: dvyakimov/slsa

repo_name: dvyakimov/slsa


text:
# pi-ticker

I started this project because I've been working from home for the past 2 months and there
really is no end in sight with the pandemic happening. I'm working in my basement and the
rest of my family can't always tell when I'm on a Zoom call. I wanted a way to let them know
when I am on a call or just working and I had a [Raspberry Pi](https://www.raspberrypi.org/) with
a [Unicorn HAT HD](https://shop.pimoroni.com/products/unicorn-hat-hd) from an earlier project.

The display is updated by a script that subscribes to an MQTT topic. The MQTT messages can be triggered in various ways.
I have a script below which detects when you are in a Zoom call. There's also a menu driven client.

**ticker.py** - a headless service that subscribes to an MQTT topic and displays messages on a Unicorn HAT HD.

**ticker-client.py** - a client application that sends messages to an MQTT topic which are then displayed by the ticker service.

**zoom-detector.py** - script to detect when a zoom meeting is in progress. It looks for a `CptHost` process and sets the
ticker message accordingly.

**settings.yml** - used by the scripts above. Add your MQTT server address.

This service requires an MQTT server like [Mosquitto](http://mosquitto.org/). You can run it on the Raspberry Pi itself or on another computer you have on your network.

![Demo](demo.gif)

There are various ways to make the ticker.py script run when the Pi boots up. Systemd, Docker, auto-login and run the script in the `.bashrc`.
My preference is to use Docker. I've added a Makefile with build and deploy rules. You'll need to set an environment variable named `TICKER_HOST`
that will be used to ssh to the Raspberry Pi you've already setup with Docker.

repository: CaseyMacPherson/pi-ticker

repo_name: CaseyMacPherson/pi-ticker