{
    "neopixel": {
        "simulationBehavior": "neopixel",
        "visual": {
            "builtIn": "neopixel",
            "width": 58,
            "height": 113,
            "pinDistance": 9,
            "pinLocations": [
                {
                    "x": 10,
                    "y": 0
                },
                {
                    "x": 19,
                    "y": 0
                },
                {
                    "x": 28,
                    "y": 0
                }
            ]
        },
        "numberOfPins": 3,
        "pinDefinitions": [
            {
                "target": {
                    "pinInstantiationIdx": 0
                },
                "style": "solder",
                "orientation": "+Z"
            },
            {
                "target": "threeVolt",
                "style": "solder",
                "orientation": "+Z"
            },
            {
                "target": "ground",
                "style": "solder",
                "orientation": "+Z"
            }
        ],
        "instantiation": {
            "kind": "function",
            "fullyQualifiedName": "light.createStrip,light.createNeoPixelStrip",
            "argumentRoles": [
                {
                    "pinInstantiationIdx": 0,
                    "partParameter": "pin"
                },
                {
                    "partParameter": "mode"
                }
            ]
        },
        "assembly": [
            {
                "part": true,
                "pinIndices": [
                    2
                ]
            },
            {
                "pinIndices": [
                    0,
                    1
                ]
            }
        ]
    },
    "dotstar": {
        "simulationBehavior": "dotstar",
        "visual": {
            "builtIn": "dotstar",
            "width": 58,
            "height": 113,
            "pinDistance": 9,
            "pinLocations": [
                {
                    "x": 10,
                    "y": 0
                },
                {
                    "x": 17,
                    "y": 0
                },
                {
                    "x": 24,
                    "y": 0
                },
                {
                    "x": 31,
                    "y": 0
                }
            ]
        },
        "numberOfPins": 4,
        "pinDefinitions": [
            {
                "target": "ground",
                "style": "solder",
                "orientation": "+Z"
            },
            {
                "target": {
                    "pinInstantiationIdx": 0
                },
                "style": "solder",
                "orientation": "+Z"
            },
            {
                "target": {
                    "pinInstantiationIdx": 1
                },
                "style": "solder",
                "orientation": "+Z"
            },
            {
                "target": "threeVolt",
                "style": "solder",
                "orientation": "+Z"
            }
        ],
        "instantiation": {
            "kind": "function",
            "fullyQualifiedName": "light.createAPA102Strip",
            "argumentRoles": [
                {
                    "pinInstantiationIdx": 0,
                    "partParameter": "dataPin"
                },
                {
                    "pinInstantiationIdx": 1,
                    "partParameter": "clkPin"
                },
                {
                    "partParameter": "mode"
                }
            ]
        },
        "assembly": [
            {
                "part": true,
                "pinIndices": [
                    0
                ]
            },
            {
                "pinIndices": [
                    1, 2
                ]
            },
            {
                "pinIndices": [
                    3
                ]
            }
        ]
    },
    "pixels": {
        "simulationBehavior": "pixels",
        "visual": { 
            "builtIn": "pixels",
            "width": 58,
            "height": 113,
            "pinDistance": 9,
            "pinLocations": [
                {
                    "x": 10,
                    "y": 0
                },
                {
                    "x": 17,
                    "y": 0
                },
                {
                    "x": 24,
                    "y": 0
                },
                {
                    "x": 31,
                    "y": 0
                }
            ]
        },
        "numberOfPins": 4,
        "pinDefinitions": [
            {
                "target": "ground",
                "style": "solder",
                "orientation": "+Z"
            },
            {
                "target": "MOSI",
                "style": "solder",
                "orientation": "+Z"
            },
            {
                "target": "SCK",
                "style": "solder",
                "orientation": "+Z"
            },
            {
                "target": "threeVolt",
                "style": "solder",
                "orientation": "+Z"
            }
        ],
        "instantiation": {
            "kind": "singleton"
        },
        "assembly": [
            {
                "part": true,
                "pinIndices": [
                    0
                ]
            },
            {
                "pinIndices": [
                    1, 2
                ]
            },
            {
                "pinIndices": [
                    3
                ]
            }
        ]
    },    
    "buttons": {
        "simulationBehavior": "buttons",
        "visual": {
            "builtIn": "buttons",
            "width": 75,
            "height": 45,
            "pinDistance": 15,
            "pinLocations": [
                {
                    "x": 0,
                    "y": 0
                },
                {
                    "x": 30,
                    "y": 45
                }
            ]
        },
        "numberOfPins": 2,
        "pinDefinitions": [
            {
                "target": "ground",
                "style": "male",
                "orientation": "-Z"
            },
            {
                "target": {
                    "pinInstantiationIdx": 0
                },
                "style": "male",
                "orientation": "-Z"
            }
        ],
        "instantiation": {
            "kind": "function",
            "fullyQualifiedName": "Button.onEvent,Button.isPressed,Button.wasPressed",
            "argumentRoles": [
                {
                    "pinInstantiationIdx": 0,
                    "partParameter": "button"
                }
            ]
        },
        "assembly": [
            {
                "part": true
            },
            {
                "pinIndices": [
                    0,
                    1
                ]
            }
        ]
    },
    "slideswitch": {
        "numberOfPins": 3,
        "simulationBehavior": "slideswitch",
        "visual": {
            "builtIn": "slideswitch",
            "width": 100,
            "height": 100,
            "pinDistance": 15,
            "pinLocations": [
                {
                    "x": 30,
                    "y": 0
                },
                {
                    "x": 45,
                    "y": 0
                },
                {
                    "x": 60,
                    "y": 0
                }
            ]
        },
        "pinDefinitions": [
            {
                "target": "ground",
                "style": "male",
                "orientation": "-Z"
            },
            {
                "target": {
                    "pinInstantiationIdx": 0
                },
                "style": "male",
                "orientation": "-Z"
            },
            {
                "target": "threeVolt",
                "style": "male",
                "orientation": "-Z"
            }
        ],
        "instantiation": {
            "kind": "function",
            "fullyQualifiedName": "DigitalInOutPin.digitalRead,DigitalInOutPin.onPulsed,DigitalInOutPin.onEvent",
            "argumentRoles": [
                {
                    "pinInstantiationIdx": 0,
                    "partParameter": "pin"
                }
            ]
        },
        "assembly": [
            {
                "part": true,
                "pinIndices": [
                    0
                ]
            },
            {
                "pinIndices": [
                    1
                ]
            }
        ]
    },
    "microservo": {
        "simulationBehavior": "microservo",
        "visual": {
            "builtIn": "microservo",
            "width": 74.85,
            "height": 200,
            "pinDistance": 10,
            "pinLocations": [
                {
                    "x": 30,
                    "y": 5
                },
                {
                    "x": 37,
                    "y": 5
                },
                {
                    "x": 45,
                    "y": 5
                }
            ]
        },
        "numberOfPins": 3,
        "pinDefinitions": [
            {
                "target": {
                    "pinInstantiationIdx": 0
                },
                "style": "croc",
                "orientation": "+Z"
            },
            {
                "target": "threeVolt",
                "style": "croc",
                "orientation": "+Z"
            },
            {
                "target": "ground",
                "style": "croc",
                "orientation": "+Z"
            }
        ],
        "instantiation": {
            "kind": "function",
            "fullyQualifiedName": "PwmOnlyPin.servoWrite,servos.Servo.setAngle,servos.Servo.run,servos.Servo.setPulse",
            "argumentRoles": [
                {
                    "pinInstantiationIdx": 0,
                    "partParameter": "name"
                }
            ]
        },
        "assembly": [
            {
                "part": true,
                "pinIndices": [
                    2
                ]
            },
            {
                "pinIndices": [
                    0,
                    1
                ]
            }
        ]
    },
    "led": {
        "numberOfPins": 2,
        "visual": {
            "builtIn": "led",
            "width": 68,
            "height": 180,
            "pinDistance": 15,
            "pinLocations": [
                {
                    "x": 0,
                    "y": 0
                },
                {
                    "x": 60,
                    "y": 0
                }
            ]
        },
        "simulationBehavior": "led",
        "pinDefinitions": [
            {
                "target": {
                    "pinInstantiationIdx": 0
                },
                "style": "male",
                "orientation": "-Z"
            },
            {
                "target": "ground",
                "style": "male",
                "orientation": "-Z"
            }
        ],
        "instantiation": {
            "kind": "function",
            "fullyQualifiedName": "DigitalInOutPin.digitalWrite",
            "argumentRoles": [
                {
                    "pinInstantiationIdx": 0,
                    "partParameter": "name"
                }
            ]
        },
        "assembly": [
            {
                "part": true,
                "pinIndices": [
                    0
                ]
            },
            {
                "pinIndices": [
                    1
                ]
            }
        ]
    },
    "analogled": {
        "numberOfPins": 2,
        "visual": {
            "builtIn": "led",
            "width": 68,
            "height": 180,
            "pinDistance": 15,
            "pinLocations": [
                {
                    "x": 0,
                    "y": 0
                },
                {
                    "x": 60,
                    "y": 0
                }
            ]
        },
        "simulationBehavior": "led",
        "pinDefinitions": [
            {
                "target": {
                    "pinInstantiationIdx": 0
                },
                "style": "male",
                "orientation": "-Z"
            },
            {
                "target": "ground",
                "style": "male",
                "orientation": "-Z"
            }
        ],
        "instantiation": {
            "kind": "function",
            "fullyQualifiedName": "AnalogOutPin.analogWrite",
            "argumentRoles": [
                {
                    "pinInstantiationIdx": 0,
                    "partParameter": "name"
                }
            ]
        },
        "assembly": [
            {
                "part": true,
                "pinIndices": [
                    0
                ]
            },
            {
                "pinIndices": [
                    1
                ]
            }
        ]
    },
    "photocell": {
        "numberOfPins": 3,
        "visual": {
            "builtIn": "photocell",
            "width": 68,
            "height": 180,
            "pinDistance": 15,
            "pinLocations": [
                {
                    "x": 0,
                    "y": 0
                },
                {
                    "x": 15,
                    "y": 0
                },
                {
                    "x": 60,
                    "y": 0
                }
            ]
        },
        "simulationBehavior": "photocell",
        "pinDefinitions": [
            {
                "target": "threeVolt",
                "style": "male",
                "orientation": "-Z"
            },
            {
                "target": {
                    "pinInstantiationIdx": 0
                },
                "style": "male",
                "orientation": "-Z"
            },
            {
                "target": "ground",
                "style": "male",
                "orientation": "-Z"
            }
        ],
        "instantiation": {
            "kind": "function",
            "fullyQualifiedName": "AnalogInPin.analogRead",
            "argumentRoles": [
                {
                    "pinInstantiationIdx": 0,
                    "partParameter": "name"
                }
            ]
        },
        "assembly": [
            {
                "part": true,
                "pinIndices": [
                    0
                ]
            },
            {
                "pinIndices": [
                    1
                ]
            }
        ]
    }
}